Главная страница

Системы счисления. Алгоритмы сложения и вычитания. Алгоритм сложения


Скачать 73.5 Kb.
НазваниеАлгоритм сложения
АнкорСистемы счисления
Дата11.08.2022
Размер73.5 Kb.
Формат файлаdoc
Имя файлаАлгоритмы сложения и вычитания.doc
ТипДокументы
#644222




Алгоритм сложения

Сложение однозначных чисел можно выполнить, основываясь на определении этого действия, например, аксиоматическом, но чтобы всякий раз не обращаться к определению, все суммы, которые получаются при сложении однозначных чисел, записывают в особую таблицу сложения и запоминают.

Например, 1 + 1 = 2, 7 + 9 = 16 и т.д.

Е
стественно, смысл сложения сохраняется и для многозначных чисел, но практическое выполнение сложения происходит по особым правилам. Сумму многозначных чисел обычно находят, выполняя сложение столбиком. Например,
Выясним, каким образом возникает этот алгоритм, какие теоретические положения лежат в его основе.

Представим слагаемые 341 и 7238 в виде суммы степеней десяти с коэффициентами:

341 + 7238 = (3·102 + 4·10 + 1) + (7·103 + 2·102 + 3·10 + 8).

Раскроем скобки в полученном выражении, поменяем местами и сгруппируем слагаемые так, чтобы единицы оказались рядом с единицами, десятки с десятками и т.д. Все эти преобразования можно выполнить на основании соответствующих свойств сложения. Свойство ассоциативности разрешает записать выражение без скобок:

3·102 + 4·10 + 1 + 7·103 + 2·102 + 3·10 + 8.

На основании свойства коммутативности поменяем местами слагаемые:

7·103 + 3·102 + 2·102 + 4·10 + 3·10 + 1 + 8.

Согласно свойству ассоциативности произведем группировку:

7·103 + (3·102 + 2·102) + (4·10 + 3·10) + (1 + 8).

Вынесем за скобки в первой группе число 102, а во второй – 10. Это можно сделать в соответствии со свойством дистрибутивности умножения относительно сложения:

7·103 + (3 + 2)·102 + (4+3)· 10 + (1 + 8).

Итак, сложение данных чисел 341 и 7238 свелось к сложению однозначных чисел, изображенных цифрами соответствующих разрядов. Эти суммы находим по таблице сложения: 7·103 + 5·102 +7·10 + 9. Полученное выражение есть десятичная запись числа 7579.

Видим, что в основе алгоритма сложения многозначных чисел лежат следующие теоретические факты:

– способ записи чисел в десятичной системе счисления;

– свойства коммутативности и ассоциативности сложения;

– дистрибутивность умножения относительно сложения;

– таблица сложения однозначных чисел.

Нетрудно убедиться в том, что в случае сложения чисел «с переходом через десяток» теоретические основы алгоритма сложения будут теми же.

Выведем алгоритм сложения многозначных чисел в общем виде. Пусть даны числа:

х = аn·10nn-1·10n-1+...+а1·10 + а0 и у = bn·10n+bn-1·10n-1+ ... + b1·10 + b0,

т.е. рассмотрим случай, когда количество цифр в записи чисел х и у одинаково,

х+у = (аn·10nn-1·10n-1+...+ а1·10 + а0) + (bn·10n+bn-1·10n-1+...+ b1·10 + b0) =

n + bn)·10n + (аn-1 + bn-1)·10n-1 +... + (а1+ b1)·10 + (а0 + b0) – преобразования выполнены на основе свойств ассоциативности и коммутативности сложения, а также дистрибутивности умножения относительно сложения.

Сумму (аn+ bn )·10n + (аn-1 + bn-1)·10n-1 +... + (а1+ b1)·10 + (а0 + b0) вообще говоря, нельзя рассматривать как десятичную запись числа х + у, так как коэффициенты перед степенями 10 могут быть больше 9. Лишь в случае, когда все суммы аk + bk не превосходят 9, операцию сложения можно считать законченной. В противном случае выбираем наименьшее k, для которого аk+bk10. Если аk + bk 10, то из того, что 0  аk  9 и 0  bk  9, следует неравенство 0  аk + bk  18 и поэтому аk + bk можно представить в виде

аk + bk = 10+ сk, где 0  сk  9. Но тогда (аk + bk) ·10k =(10 + сk) ·10k = = 10k+1 + сk·10k. В силу свойств сложения и умножения в

n + bn )·10n +... + (а1+ b1)·10 + (а0 + b0) слагаемые

k+1 + bk+1) ·10k+1 + (аk + bk) ·10k могут быть заменены на

k+1 + bk+1 + 1) ·10k+1 + ck·10k. После этого рассматриваем коэффициенты

ап + bn, ап-1 + bn-1, аk+2+ bk+2, аk+1 + bk+1 + 1, выбираем наименьшее s, при котором коэффициент больше 9, и повторяем описанную процедуру. Через n шагов придем к выражению вида: х + у = (cn + 10) ·10n +...+ c0, где cn  0, или х + у = 10n+1 + cn ·10n +...+ c0 и где для всех nвыполняется равенство 0  сn < 10. Тем самым получена десятичная запись числа х + у.

В случае, когда десятичные записи слагаемых имеют разное количество цифр, надо приписать к числу, имеющему меньшее количество цифр, несколько нулей впереди, уравняв количество цифр в обоих слагаемых. После этого применяется описанный выше процесс сложения. Он позволяет сформулировать в общем виде алгоритм сложения натуральных чисел, записанных в десятичной системе счисления.

1. Записывают второе слагаемое под первым так, чтобы соответствующие разряды находилось друг под другом.

2. Складывают единицы первого разряда. Если сумма меньше десяти записывают ее в разряд единиц ответа и переходят к следующему разряду (десятков).

3. Если сумма единиц больше или равна десяти, то представляют ее в виде а0 + b0 = 1·10 + c0, где c0 – однозначное число; записывают c0 в разряд единиц ответа и прибавляют 1 к десяткам первого слагаемого, после чего переходят к разряду десятков.

4. Повторяют те же действия с десятками, потом с сотнями и т.д. Процесс заканчивается, когда оказываются сложенными цифры старших разрядов. При этом, если их сумма больше или равна десяти, то приписываем впереди обоих слагаемых нули, увеличиваем нуль перед первым слагаемым на 1 и выполняем сложение 1 + 0 = 1. Заметим, что в этом алгоритме (как и в некоторых других) для краткости употребляется термин «цифра» вместо «однозначное число, изображаемое цифрой».

Алгоритм вычитания


Вычитание однозначного числа b из однозначного или двузначного числа а, не превышающего 18, сводится к поиску такого числа с, что b + с = а, и происходит с учетом таблицы сложения однозначных чисел.

Если же числа а и b многозначные и b < а, то смысл действия вычитания остается тем же, что и для вычитания в пределах 20, но техника нахождения разности становится иной: разность многозначных чисел чаще всего находят, производя вычисления столбиком, по определенному алгоритму. Выясним, каким образом возникает этот алгоритм, какие теоретические факты лежат в его основе.

Рассмотрим разность чисел 485 и 231. Воспользуемся правилом записи чисел в десятичной системе счисления и представим данную разность в тàêîì виде: 485 – 231 = (4·102 + 8·10 + 5) – (2·102 + 3·10 + 1). Чтобы вычесть из числа 4·102 + 8·10 + 5 сумму 2·102 + 3·10 + 1, достаточно вычесть из него каждое слагаемое этой суммы одно за другим, и тогда:

(4·102 + 8·10 + 5)–(2·102 + 3·10 + 1)=(4·102 + 8·10 + 5) – 2·102 – 3·10 – 1.

Чтобы вычесть число из суммы, достаточно вычесть его из какого-либо одного слагаемого (большего или равного этому числу). Поэтому число 2·102 вычтем из слагаемого 4·102, число 3·10 из слагаемого 8·10, а число 1 – из слагаемого 5, тогда:

(4·102 + 8·10 + 5)–2·102 – 3·10 – 1=(4·102 – 2·102)+(8·10 – 3·10)+(5 – 1).

Воспользуемся дистрибутивностью умножения относительно вычитания и вынесем за скобки 102 и 10. Тогда выражение будет иметь вид: (4 – 2)·102 + (8 – 3)·10 + (5 – 1). Видим, что вычитание трехзначного числа 231 из трехзначного числа 485 свелось к вычитанию однозначных чисел, изображенных цифрами соответствующих разрядов в записи заданных трехзначных чисел. Разности 4 – 2, 8 – 3 и 5 – 1 находим по таблице сложения и получаем выражение: 2·102 + 5·10 + 4, которое является записью числа 254 в десятичной системе счисления. Таким образом, 485 – 231= 254. Выражение (4 – 2) ·102 + (8 – 3)·10 + (5 – 1) задает правило вычитания, которое обычно выполняется столбиком:

В
идим, что вычитание многозначного числа из многозначного основывается на:

– способе записи числа в десятичной системе счисления;

– правилах вычитания числа из суммы и суммы из числа;

– свойстве дистрибутивности умножения относительно вычитания;

– таблице сложения однозначных чисел.

Нетрудно убедиться в том, что если в каком-нибудь разряде уменьшаемого стоит однозначное число, меньше числа в том же разряде вычитаемого, то в основе вычитания лежат те же теоретические факты и таблица сложения однозначных чисел. Найдем, например, разность чисел 760 – 326. Воспользуемся правилом записи чисел в десятичной системе счисления и представим эту разность в таком виде:

760 – 326 = (7·102 + 6·10 + 0) – (3·102 + 2·10 + 6).

Поскольку из числа 0 нельзя вычесть 6, то выполнить вычитание аналогичное тому, как было сделано в первом случае, невозможно. Поэтому возьмем из числа 760 один десяток и представим его в виде 10 единиц – десятичная система счисления позволяет это сделать – тогда будем иметь выражение: (7·102 + 5·10 + 10) – (3·102 + 2·10 + 6). Если теперь воспользоваться правилами вычитания суммы из числа и числа из суммы, а также дистрибутивностью умножения относительно вычитания, то получим выражение

(7 – 3)·102 + (5 – 2)·10 + (10 – 6) или 4·102 + 3·10 + 4. Последняя сумма есть запись числа 434 в десятичной системе счисления. Значит, 760 – 326 = 434.

Рассмотрим процесс вычитания многозначного числа из многозначного в общем виде.

Пусть даны два числа х = аn10n + аn-1·10n-1 + ... + а1·10 + а0 и

у = bn·10n + bn-1·10n-1 + ... + b1·10 + b0. Известно также, что у < х. Используя правила вычитания числа из суммы и суммы из числа, дистрибутивность умножения относительно вычитания, можно записать, что

n – bn )·10n + (аn-1 – bn-1)·10n-1 +... + (а1 – b1)·10 + (а0 – b0) (1)

Эта формула задает алгоритм вычитания, но при условии, что для всех m выполняется условие аk  bk. Если же это условие не выполняется, то берем наименьшее k, для которого аk < bk.Пусть m– наименьший индекс, такой, что m >k. и аm  0, а аm-1 = ... = аk+1 = 0. Имеет место равенство аm·10m = (аm – 1)·10m +9·10m–1 + ... + 9·10k+1 + 10·10k (например, если m = 4, k= 1, аm =6, то 6·104 = 5·104 + 9·103 + 9·102 + 10·10). Поэтому в равенстве (1) выражение (аm – bm)·10m + ...+ (аk – bk )·10k можно заменить на

m – bm – 1)·10m+(9 – bm–1 )·10m–1+...+(9 – bk+1)·10k+1 + (аk + 10 – bk)·10k. Из того, что аk < bk < 10, вытекает неравенство 0 < 10 + аk – bk < 10, а из того, что 0 bs 9, вытекает неравенство 09–bs<10, где k+1sm – 1. Поэтому в записи х – у=n – bn)·10n +...+ (аm – bm – 1)·10m + (9 – bm–1)·10m–1 + ... + (9 – bk+1)·10k+1 + (аk + 10 – bk)·10k + ...+ (а0 – b0) все коэффициенты с индексом, меньшим m, неотрицательны и не превосходят 9. Применяя далее те же преобразования к коэффициентам аn – bn, ..., аm – bm – 1, через n шагов придем к записи разности х – у в виде

х – у = cn·10n + cаn-1·10n-1 +... + c0, где для всех k выполняется неравенство 0 < ck < 10. Если при этом окажется, что сn = 0, то надо отбросить первые слагаемые, вплоть до первого коэффициента, отличного от нуля.

Описанный процесс позволяет сформулировать в общем виде алгоритм вычитания чисел в десятичной системе счисления.

  1. Записываем вычитаемое под уменьшаемым так, чтобы соответствующие разряды находились друг под другом.

2. Если цифра в разряде единиц вычитаемого не превосходит соответствующей цифры уменьшаемого, вычитаем ее из цифры уменьшаемого, записываем разность в разряд единиц искомого числа, после чего переходим к следующему разряду.

3. Если же цифра единиц вычитаемого больше единиц уменьшаемого, т.е. b0 > а0, а цифра десятков уменьшаемого отлична от нуля, то уменьшаем цифру десятков уменьшаемого на 1, одновременно увеличив цифру единиц уменьшаемого на 10, после чего вычитаем из числа 10 + а0 число b0 и записываем разность в разряде единиц искомого числа, далее переходим к следующему разряду.

4. Если цифра единиц вычитаемого больше цифры единиц уменьшаемого, а цифры, стоящие в разряде десятков, сотен и ò.ä. уменьшаемого, равны нулю, то берем первую отличную от нуля цифру в уменьшаемом (после разряда единиц), уменьшаем ее на 1, все цифры в младших разрядах до разряда десятков включительно увеличиваем на 9, а цифру в разряде единиц на 10: вычитаем b0 из 10 + а0, записываем разность в разряде единиц искомого числа и переходим к следующему разряду.

5. В следующем разряде повторяем описанный процесс.

6. Вычитание заканчивается, когда производится вычитание из старшего разряда уменьшаемого.


написать администратору сайта