Э. Таненбаум - Архитектура компьютера (1127755), страница 188
Текст из файла (страница 188)
Первая из них называется системой со знаком. В такой системе крайний левый бит — это знаковый бит 740 Приложение д. двоичные числа (Π— плюс, 1 — минус), а оставшиеся биты показывают абсолютное значение числа. Во второй системе, которая называется дополнением до единицы, тоже присутствует знаковый бит (Π— плюс, 1 — минус). Чтобы сделать число отрицательным, нужно заменить каждую единицу нулем и каждый ноль единицей.
Это относится и к знаковому биту. Система дополнения до единицы уже устарела. Третья система, дополнение до двух, содержит знаковый бит (Π— плюс, 1 — минус). Отрицание числа происходит в два этапа. Сначала каждая единица меняется на ноль, а каждый ноль — на единицу (как и в системе дополнения до единицы). Затем к полученному результату прибавляется единица. Двоичное сложение происходит точно так же, как и десятичное, только перенос совершается в том случае, если сумма больше 1, а не больше 9. Например, рассмотрим преобразование числа 6 в форму с дополнением до двух: + Число «-6: 00000110 + Число -6 в системе с дополнением до единицы: 11111001 + Число — 6 в системе с дополнением до двух: 11111010 Если нужно совершить перенос из крайнего левого бита, он просто отбрасывается.
В четвертой системе, которая для т-разрядных чисел называется системой со смещением на 2 -', число представляется как сумма этого числа и 2 -'. Например, для 8-разрядного числа (т = 8) — это система со смещением на 128, в ней число сохраняется в виде суммы исходного числа и 128. Следователыю, — 3 превращается в — 3 + 128 = 125, и это число (-3) представляется 8-разрядным двоичным числом 125 (01111101).
Числа от -128 до +127 выражаются числами от 0 до 255 (все их можно записать в виде 8-разрядного положительного числа). Отметим, что эта система соответствует системе с дополнением до двух с обращенным знаковым битом. В табл. А.2 представлены примеры отрицательных чисел во всех четырех системах. В системах со знаком и с дополнением до единицы есть два представления нуля: +О и — О. Такая ситуация нежелательна. В системе с дополнением до двух такой проблемы нет, поскольку здесь плюс ноль — это всегда плюс ноль. Но зато в этой системе есть другая особенность.
Набор битов, состоящий из единицы, за которой следуют все нули, является дополнением самого себя. В результате ряд положительных и отрицательных чисел несимметричен — существует одно отрицательное число без соответствующего ему положительного. Мы считаем это проблемами, поскольку хотим иметь систему кодировки, в которой: + существует только одно представление нуля; + количество положительных чисел равно количеству отрицательных. Двоичная арифметика 741 Таблица А.2.
Отрицательные 8-разрядные числа в четырех различных системах -и -и -и -й а системе со дополнение дополнение смещение знаком до единицы до двух на 128 й й десятичное двоичное 10 20 30 50 70 80 90 10100110 10011100 00100110 00011100 100 127 10000001 00000001 128 Не существует Не существует Не существует 10000000 00000000 Дело в том, что любой ряд чисел с равным количеством положительных и отрицательных чисел и только одним нулем содержит нечетное число членов, тогда как т бит предполагают четное число битовых комбинаций. В любом случае либо одна битовая комбинация окажется лишней, либо одной комбинации будет недоставать. Лишнюю битовую комбинацию можно использовать для обозначения числа — О, для большого отрицательного числа или для чего-нибудь еше, но она всегда будет создавать неудобства.
Двоичная арифметика Рисунок А.б иллюстрирует сложение двоичных чисел. Сложение двух двоичных чисел начинается с крайнего правого бита. Суммируются соответствующие биты в первом и втором слагаемых. Перенос совершается на одну позицию влево, как и в десятичной арифметике. В арифметике с дополнением до единицы бит переноса после сложения крайних левых битов 00000001 00000010 00000011 00000100 00000101 00000110 00000111 00001000 00001001 00001010 00010100 00011110 1010!000 00110010 00111100 01000110 01010000 01011010 01100100 01111111 1000000! 10000010 10000011 10000100 10000101 10000110 10000111 10001000 10001001 100010!О 10010100 1001!110 10101000 10110010 10111100 11000110 11010000 11011010 11100100 11111111 11111110 11111101 11111100 11111011 11111010 11111001 11111000 11110111 11110110 11110101 11101011 11100001 !1010111 11001101 1100001! 10111001 10101111 10100101 10011011 10000000 11111111 011111!11 11111110 01111110 11111101 01111101 111!1100 01111100 11111011 01111011 11111010 01111010 !1111001 01111001 11111000 О!111000 11110111 011101!1 11110110 01110110 11101100 01101!00 11100010 01100010 11011000 01011000 11001110 01001110 11000100 01000100 10111010 001!1010 10110000 00110000 742 Приложение А.
Двоичные числа Первое слагаемое 0 0 1 1 Второе слагаемое +О Сумма Перенос 0 1 1 0 0 О 1 Рис. А.б. Таблица сложения для двоичных чисел Десятичные числа Дополнение до единицы Дополнение до двух 10 + (-3) +7 00001010 11111100 00001010 11111101 1 00000111 Отбрасывается Перенос 1 00000111 Рис. АЛ. Сложение в системах с дополнением до единицы и с дополнением до двух Если первое и второе слагаемые имеют противоположные знаки, ошибки переполнения не произойдет.
Если они имеют одинаковые знаки, а результат— противоположный знак, значит, произошла ошибка переполнения и результат неверен. И в арифметике с дополнением до единицы, и в арифметике с дополнением до двух переполнение происходит тогда и только тогда, когда перенос в знаковый бит отличается от переноса из знакового бита. В большинстве компьютеров перенос из знакового бита сохраняется, но перенос в знаковый бит из результата не виден, поэтому обычно вводится специальный бит переполнения. Вопросы и задания 1. Преобразуйте следуюшие числа в двоичные; 1984, 4000, 8192.
2. Преобразуйте двоичное число 1001101001 в десятичную, восьмеричную и шестнадцатеричную системы. 3. Какие из символьных строк ВЕП, САВ, ПЕАП, ПЕСАПЕ, АССЕЕ)ЕЕ), ВАС, ПАП являются шестнадцатеричными числами? 4. Выразите десятичное число 100 в системах счисления с основаниями от 2 до 9. прибавляется к крайнему правому биту. Этот процесс называется циклическим переносом. В арифметике с дополнением до двух бит переноса, полученный в ре- зультате сложения крайних левых битов, просто отбрасывается.
Примеры ариф- метических действий над двоичными числами показаны на рис. А.7. Вопросы и задания 743 5. Сколько различных положительных целых чисел можно выразить в л разрядах,использовав числа с основанием системы счисления г? 6. Большинство людей с помощью пальцев на руках могут сосчитать до 10. Однако компьютерщики способны на большее. Представим, что каждый палец соответствует одному двоичному разряду. Пусть вытянутый палец означает 1, а загнутый — О.
До скольки мы можем сосчитать, используя пальцы обеих рук? А если рассматривать пальцы на руках и на ногах? Представим, что большой палец левой ноги — это знаковый бит для чисел с дополнением до двух. Сколько чисел можно выразить таким способом? 7. Выполните следующие вычисления над 8-разрядными числами с дополнением до двух: 00101101 ~- 01101111 11111111 е 11111111 00000000 — 11111111 11110111 — 11110111 8. Выполните те же вычисления в системе с дополнением до единицы. 9.
Далее приведены задания на сложение 3-разрядных двоичных чисел в системе с дополнением до двух. Для каждой суммы установите: 1) Равен ли знаковый бит результата единице. 2) Равны ли младшие три бита нулю. 3) Не произошло ли переполнения. 000 + 001 000 + 111 111 + 110 100 -~ 111 100 + 100 10. Десятичные числа со знаком, состоящие из п разрядов, можно представить в и + 1 разрядах без знака. Положительные числа содержат 0 в крайнем левом разряде. Отрицательные числа получаются путем вычитания каждого разряда из 9.
Например, отрицательным числом для 014 725 будет 985 274. Такие числа называются числами с дополнением до девяти. Они аналогичны двоичным числам с дополнением до единицы. Выразите следующие числа в виде 3-разрядных чисел в системе с дополнением до девяти: 6, — 2, 100, — 14, — 1, О. 11. Сформулируйте правило для сложения чисел с дополнением до девяти, а затем выполните следующие вычисления: 0001 + 9999 0001 + 9998 9997 +9996 9241 + 0802 744 Приложение А.
Двоичные числа 12. Система с дополнением до десяти аналогична системе с дополнением до двух. Отрицательное число в системе с дополнением до десяти получается путем прибавления единицы к соответствующему числу с дополнением до девяти без учета переноса. По какому правилу происходит сложение в системе с дополнением до десятин 13. Составьте таблицы умножения для чисел системы счисления с основанием 3. 14. Перемножьте двоичные числа 0111 и 0011. 15. Напишите программу, которая на входе получает десятичное число со знаком в виде строки АЯСП-символов, а на выходе выводит представление этого числа в восьмеричной и шестнадцатеричной системах, а также в двоичной системе с дополнением до двух.