yandex rtb 1
ГоловнаЗворотній зв'язок
yande share

Организация ЭВМ

2.5. Двоичная арифметика

Правила выполнения арифметических действий над двоичными числами определяются арифметическими действиями над одноразрядными двоичными числами.

 

перенос в

старший разряд

 

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

2.5.1. Сложение

Как и в десятичной системе счисления, сложение двоичных чисел начинается с правых (младших) разрядов. Если результат сложения цифр МЗР обоих слагаемых не помещается в этом же разряде результата, то происходит перенос. Цифра, переносимая в соседний разряд слева, добавляется к его содержимому. Такая операция выполняется над всеми разрядами слагаемых от МЗР до СЗР.

 

Пример.

Сложить два числа в десятичном и двоичном представлении (формат – 1 байт).

 

Перенос (единицы)              11                    1111111

Слагаемое 1                           099(10)             01100011(2)

Слагаемое 2                           095(10)             01011111(2)

Сумма                                      194(10)             11000010(2)

 

Операция получается громоздкая со многими переносами, но удобная для ЭВМ.

2.5.2. Вычитание

Операция вычитания двоичных чисел аналогична операции в десятичной системе счисления. Операция вычитания начинается, как и сложение, с МЗР. Если содержимое разряда уменьшаемого меньше содержимого одноименного разряда вычитаемого, то происходит заем 1 из соседнего старшего разряда. Операция повторяется над всеми разрядами операндов от МЗР до СЗР.

Поясним это примером.

 

Пример.

Вычесть два числа в десятичном и двоичном представлении (формат – 1 байт).

 

Заем (единица)                     1                      01100000

Уменьшаемое                        109(10)             01101101(2)

Вычитаемое                           049(10)             00110001(2)

Разность                                  060(10)             00111100(2)

Второй вариант операции вычитания – когда уменьшаемое меньше вычитаемого – приведен в разделе представления двоичных чисел в дополнительном коде.

2.5.3. Умножение

Как и в десятичной системе счисления, операция перемножения двоичных многоразрядных чисел производится путем образования частичных произведений и последующего их суммирования. Частичные произведения формируются в результате умножения множимого на каждый разряд множителя, начиная с МЗР. Каждое частичное произведение смещено относительно предыдущего на один разряд. Поскольку умножение идет в двоичной системе счисления, каждое частичное произведение равно либо 0 (если в соответствующем разряде множителя стоит 0), либо является копией множимого, смещенного на соответствующее число разрядов влево (если в разряде множителя стоит 1). Поэтому умножение двоичных чисел идет путем сдвига и сложения. Таким образом, количество частичных произведений определяется количеством единиц в множителе, а их сдвиг – положением единиц (МЗР частичного произведения совпадает с положением соответствующей единицы в множителе). Положение точки в дробном числе определяется так же, как и при умножении десятичных чисел.

 

Пример.

Вычислить произведение 17(10)*12(10) в двоичной форме.

 

 

Естественно, что при сложении частичных произведений в общем случае возникают переносы.

Теперь рассмотрим машинный вариант операции перемножения. Общий алгоритм перемножения имеет вид

 

 

Как отмечалось выше, операция перемножения состоит в формировании суммы частичных произведений, которые суммируются с соответствующими сдвигами относительно друг друга. Этот процесс суммирования можно начинать либо с младшего, либо со старшего частичного произведения. В ЭВМ процессу суммирования придают последовательный характер, т.е. формируют одно частичное произведение, к нему с соответствующим сдвигом прибавляют следующее и т.д. (т.е. не формируют все частичные произведения, а потом их складывают). В зависимости от того, с какого частичного произведения начинается суммирование (старшего или младшего), сдвиг текущей суммы осуществляется влево или вправо. При умножении целых чисел для фиксации результата в разрядной сетке число разрядов должно равняться сумме числа разрядов в X и Y.

Рассмотрим на примере два машинных варианта выполнения умножения целых чисел: начиная со старшего частичного произведения (“старшими разрядами вперед”) и начиная с младшего частичного произведения (“младшими разрядами вперед”).

 

Пример.

Найти произведение двух чисел X*Y=1101(2)*1011(2)=13(10)*11(10)= 143(10).

Обозначим Pi – i-е частичное произведение.

1. Умножение старшими разрядами вперед:

 

 

2. Умножение младшими разрядами вперед:

 

2.5.4. Деление

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

 

Пример.

Вычислить 204(10) /12(10) в двоичном коде.

 

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

 

Пример.

Вычислить 1100.011(2)/10.01(2).

 

 

 

 

 

 

 

 

 

14