Помощничек
Главная | Обратная связь


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

Сложение обратных кодов



1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например:

Десятичная запись   Двоичные коды
  +     + 0 0000100  
  0 0000111  
      0 0001011  
             

Получен правильный результат.

2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например:

Десятичная запись   Двоичные коды
+     + 0 0000100  
-11     1 1110100 Обратный код числа -11
  -7       1 1111000 Обратный код числа -7

Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = -710.

3. А отрицательное, B положительное и по абсолютной величине больше, чем А. Например:

 

Десятичная запись   Двоичные коды  
  + -4       + 1 1111011 Обратный код числа -4
    0 0001011  
        0 0000110  
          +1  
          0 0000111  

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

4. А и В отрицательные. Например:

 

Десятичная запись   Двоичные коды  
  + -4       + 1 1111011 Обратный код числа -4
- 7     1 1111000 Обратный код числа -7
  -11       1 1110011  
          +1  
          1 1110100 Обратный код числа -11

Полученный первоначально неправильный результат (обратный код числа -1010 вместо обратного кода числа -1110) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001011 = -1110.

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

5. А и В положительные, сумма А+В больше, либо равна 2n-1, где n — количество разрядов формата чисел (для однобайтового формата n=8, 2n-1 = 27 = 128). Например:

 

Десятичная запись   Двоичные коды  
  +       + 0 1000001  
    0 1100001  
        1 0100010 Переполнене

Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (16210 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки.

6. А и В отрицательные, сумма абсолютных величин А и В больше, либо равна 2n-1. Например:

 

Десятичная запись   Двоичные коды  
  + - 63       + 1 1000000 Обратный код числа -63
- 95     1 0100000 Обратный код числа -95
  -158       0 1110011 Переполнение
          +1  

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

Сложение дополнительных кодов. Здесь также имеют место рассмотренные выше шесть случаев:

1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода.

2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например:

 

Десятичная запись   Двоичные коды  
+     + 0 0000100  
-11     1 1110101 Дополнительный код числа -11
  -7       1 1111001 Дополнительный код числа -7

Получен правильный результат в дополнительном коде. При переводе в прямой код биты цифровой части результата инвертируются и к младшему разряду прибавляется единица: 1 0000110 + 1 = 1 0000111 = -710.

3. А отрицательное B положительное и по абсолютной величине больше, чем А. Например:

 

Десятичная запись   Двоичные коды  
+ -4     + 1 1111100 Дополнительный код числа -4
    0 0001011  
  +7       0 0000111  
          Перенос отбрасывается

Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает.

4. А и В отрицательные. Например:

 

Десятичная запись   Двоичные коды  
+ -4     + 1 1111100 Дополнительный код числа -4
-7     1 1111001 Дополнительный код числа -7
  -11       1 1110101 Дополнительный код числа -11
          Перенос отбрасывается

Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает.

Случаи переполнения для дополнительных кодов рассматриваются по аналогии со случаями 5 и 6 для обратных кодов.

Сравнение рассмотренных форм кодирования целых чисел со знаком показывает:

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

Умножение и деление

Во многих компьютерах умножение производится как последовательность сложений и сдвигов. Для этого в АЛУ имеется регистр, называемый накапливающим сумматором, который до начала выполнения операции содержит число ноль. В процессе выполнения операции в нем поочередно размещаются множимое и результаты промежуточных сложений, а по завершении операции — окончательный результат.

Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.

Для иллюстрации умножим 1100112 на 1011012.

Накапливающий сумматор   Множитель
+    
     
+    
    Сдвиг на две позиции влево
+    
    Сдвиг на одну позицию влево
+    
    Сдвиг на две позиции влево
     
       

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




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.