Операционные системы -вопросы теории

       

Вычитание чисел (83 — 56 = 27)



Пример 1.2. Вычитание чисел (83 — 56 = 27)

Построение двоичного дополнения 56 :



0 0 1 1 1 0 0 0 число
1 1 0 0 0 1 1 1 побитовое отрицание
1 1 0 0 1 0 0 0 побитовое отрицание+1

Сложение с двоичным дополнением (83 + 56) mod 256 = 27:

1   0          
+ 0 1 0 1 0 0 1 1
  1 1 0 0 1 0 0 0
1 0 0 0 0 1 0 1 1

Из примера видно, что эквивалентность между операциями неполная: сложение с дополнением сопровождается переносом в 9-й разряд, которого нет при прямом вычитании. Этот факт приводит к тому, что мы уже не можем считать перенос в 9-й разряд критерием того, что результат сложения не может быть представлен 8-ю битами. Точный критерий переполнения для целочисленных операций сложения и вычитания теперь звучит так: переполнение произошло, если перенос в 9-й бит (для 8-разрядного АЛУ) не равен переносу в 10-й бит.
Но в остальном двоичное дополнение сильно упрощает жизнь проектировщикам процессоров: вместо двух устройств, сумматора и дифференциатора (по-русски, сложителя и вычитателя), нам достаточно иметь только сумматор. Кроме того, можно представлять отрицательные числа в двоично-дополнительном коде (табл. 1.3). При таком представлении признак переполнения называют также признаком потери знака.
Видно, что четыре бита позволяют нам представить либо ноль и натуральные числа от 1 до 15, либо целые числа от - 8 до 7. Во втором случае, старший бит может интерпретироваться как знаковый — если он равен 1, число отрицательное, если 0 — положительное. Для манипулирования числами в обоих представлениях можно использовать одни и те же команды сложения и вычитания, различие возникает только, когда мы начинаем интерпретировать результаты сравнения таких чисел или сами эти числа (например, переводить их в десятичный формат).
Для команд умножения и деления трюк с двоичным дополнением не проходит, поэтому процессоры, использующие такое представление данных, вынуждены иметь по две пары команд умножения и деления, знаковые и беззнаковые. Любознательному читателю предлагается самостоятельно Разработать алгоритмы умножения и деления двоичных чисел в двоично-Дополнительном представлении. За основу для этих алгоритмов опять-таки рекомендуется взять школьные методы умножения и деления многозначных чисел "в столбик".



Содержание раздела