Мои Конспекты
Главная | Обратная связь


Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Сложение чисел с разными знаками



Рассмотрим пример сложения чисел с разными знаками, используя описанную выше модель представления чисел. Где старший разряд регистра указывает знак числа (ноль для положительного, единица для отрицательного) , а само отрицательное число представляется в дополнительном коде. Сложим, для примера, восьмиразрядные числа "21" (двадцать один) и "-30" (минус тридцать).

Переведем их модули в двоичную систему счисления и запишем в 8-ми разрядные регистры. 2110 = 101012 ; 3010 = 111102

Разр.

 

Разр.

Чтобы получить число противоположное, по знаку, числу "30" возьмем от последнего дополнительный код. Сначала получим обратный код, инвертируя все разряды числа.

Разр.
30обр

Теперь прибавим единицу и получим дополнительный код.

Разр. c
                 
30обр  
+                
     
30доп  

Мы получили машинное представление числа "-30" (минус тридцать), теперь сложим эти числа (21 и -30).

Разр. c
                   
 
30доп  
     
C  

Проанализируем полученный результат. Мы видим, что в старшем (знаковом) разряде результата содержится единица, следовательно, результат есть число отрицательное и поэтому представлено оно в дополнительном коде. Значение этого числа сразу неочевидно и чтобы понять, что это за число, нам необходимо узнать его модуль.

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

Проделаем это по известной схеме - проинвертируем каждый разряд C = 11110111 и получим Ci = 00001000. Теперь прибавим единицу.

Разр. c
                   
Сi  
+                
     
 

Ну вот, модуль числа результата есть "9" (девять), а сам результат соответственно "-9", что конечно же является правильным решением поставленной задачи: 21+(-30)= -9.

Рассмотрим еще пример на сложение, вычислим "-30" (минус тридцать) плюс "40" (сорок) . Код для числа "-30" у нас уже есть, а число "40" в двоичной системе есть "101000". Так как оно положительное , то запишем его в прямом 8-ми разрядном коде и прибавим к коду числа "-30".

Разр. c
             
30доп  
 
     
 

Анализируя результат, мы видим, что старший знаковый разряд равен нулю, следовательно, результат есть число положительное и значит представлено оно в прямом коде, т.е. десять, что опять-таки является правильным решением поставленной задачи: -30+40= 10.