Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 14
Текст из файла (страница 14)
Общие преобразования позиционных систем счислении бб 467+ 8 =58 остаток 3 (младший разряд) —:8 = 7 остаток 2 —:8 = 0 остаток 7 (старший разряд) 467ю = 723з 3417+ 16 = 213 остаток 9 (младший разряд) †:1б = 13 остаток 5 —:16 = 0 остаток 13 (старший разряд) 3 !!7ю 1)591ь. В табл. 2.2 собраны методы преобразования чисел для часто встречающихся значений основания.
Табл. 2.2. Методы преобразования чисел для часто встречающихся значений основания Пример Преобразование Метод Шестнадцатеричного числа в Двоичное Подстановка Восьмеричное Подстановка Десятичное Подстановка Десятичного числя в Двоичное Деление !08,„ = ! 101!00, Двоичного числа в Восьмеричное Подстановка П!естнддцатеричное Подстановка Десятичное Подстановка Восьмеричного чиода в Двоичное Подстановка Шестнадцатеричное Подстановка Десятичное Подстановка 10111011001, = 1О !!1 О!! 001, = 2731„ 10!11011001, = 10! !!01 Р)01, = 5В9„ 101110! 1001,= Н 024» О 512 ь 1 256+ ! 128 ь 1 64ь ~- О 32 » 1 ! 6 + 1 8 -» О 4 ь О 2 ь 1 ! = ! 497 н 1234,= 001 010011 100, 1234,= 001 0100! ! 100,=0010 10011100,=29С„ 1234„= 1 512+ 264+3 8е4 1 =668,„ СОВŠ— 110000001!01 И10 СОВЕ„= 1100 0000 ! !01 1110, = =1 ЮОООО 011 011!!О, = 140336„ СОВЕн=- !2 4096-» 0256 ч 13.16-» !4.1 = = 49374к, 108,„—: 2 =- 54 остаток 0 (младший разряд) —: 2 = 27 остаток 0 .
2 = ! 3 остаток 1 —: 2 = 6 остаток 0 —:2=-3 остаток О -. 2 = 1 остаток 1 2 = 0 остаток ! (старший разряд) 56 Глава 2. Числовые системы и коды Преобразование Метод Пример Восьмеричное Деление 108н 8= !3 остаток 4(младший Разрал) е8= ! остаток5 . 8 = О остаток 1 (старший разрял) 108н = !08н+ ! 54в 16 = 6 остагок 12 (младший разряд) —: 16 = 0 остаток 6 (старший разряд) 6Сн Шестнадцатеричное Деление !08„= 2.4. Сложение и вычитание недесятичных чисел С 00101! 000 Х 173 10101101 У + 44 + 00101100 !01111000 10111110 + !0001101 С Х 190 г' +141 Х+ У 217 110!100! Х+ У 331 101001011 С 000000000 Х 170 10101010 У + 85 + 01010101 О!1!!!!!О 0111111! + 00111111 С Х 127 + 63 Х+ У 255 111!!111 Х+ У 190 10111110 При сложении и вычитании недесятичных чисел вручную алгоритм действий тот же самый, которому нас научили в средней школе для десятичных чисел; подвох состоит только в том, что правила сложения и вычитания оказываются другими.
Прав ила сложения дваи«н ых чисел (Ь влагу аг(г!Иоп) и их выч итан и я представлены в табл. 2 3. При сложении двух двоичных чисел Хи Умы складываем младшие биты, полагая, что бит переноса в этот разряд (с,„) равен 0; в результате получаем бит переноса в старший разряд(с,,) и сумму (з) согласно таблице. Затем продолжаем эту процедуру для других разрядов, переходя справа налево и принимая каждый раз во внимание бит переноса, полученный на предыдущем шаге сум мирования.
На рис. 2.1 приведены два примера сложения десятичных чисел и соответствующих им двоичных чисел, где стрелками показаны переносы в тех случаях, когда бит переноса равен 1. Те же примеры повторены ниже, где к ним добавлены два других примера„а значения битов переноса представлены двоичной строкой С: 2.4. Сложение н вычитание недвсятичных чисел б7 с,„илиЬ, -т у с н ! ! 1 0 1 0 О 0 1 1 1 0 1 0 0 О 0 1 1 1 1111 х 1ао ! а11~1~!1~ ! г +141 + 1 а!а!а!1!! ! 1 1 х 1тз ! о!1 а~!111 а 1 +44 + а а!1 о!1!1 а а а а 1 х+г зз! 1а1аа1а1! хг 21т !1а! 1аа! Рис.
2.1. Примеры сложения десятичных чисел и соответствующих им двоичных чисел анм а 1!а ам г г а !' а а !' а -а!!а!!а! Х 21а вааньшми06 х анчяааиаа т 7 ттт тат т -!аа х-г !а! а!!аа!а! Рис. 2.2. Примеры вычитания десятичных чисел и соответствующих им двоичных чисел Подобным образом выполняется н двоичное вычитание !Ь1пагу хиЬггает!ол), только при переходе от одного шага к другому принимаются во внимание и вырабатываются не биты переноса, а биты заема !Ь, н Ь „,), и результатом вычитания в О 0 О 0 1 1 1 0 О 0 О 1 О О 0 1 ! 0 0 0 0 1 ! ! 0 1 1 1 ! Табл. 2.3.
ПравиладвоЬа ичнсгсслсженияивычи- О 0 , тания 88 Глаеа2.Чиеловыесиетемыи коды каждом разряде становится разность В. Два примера вычитания десятичных и соответствующих им двоичных чисел приведены парис. 2.2. На рисунке с помощью стрелок и битов показано, что точно так же, как и при десятичном вычитании, значение двоичногоуиеныаа«нага (ттиепВ) в каждом разряде меняется при взятии заема из старшего разряда. Те же примеры повторены ниже, и к ним добавлены два других примера, а значения битов заема представлены двоичной строкой В: Вычитание очень часто производится в компьютерах при сравнении чисел !сотраг!ля питбвгл). Если, например, при выполнении операции Х вЂ” У возникает требование заема из старшего бита, то зто означает, чтоХ меньше У; в противном случае Х больше или равно К В параграфе 5.! 0 мы рассмотрим соотношение между битами переноса и битами заема в схемах суммирования и вычитания В О!101!О!О Х 210 11010010 У -109 — 0110!Ю1 В 00!!!!100 Х 229 11100101 У вЂ” 46 — 0010!110 Х вЂ” У !01 01!00101 Х - У !83 10110111 В ООООООООО Х 221 11011101 У вЂ” 76 — ОЮО!100 В О!0101010 Х 170 10101010 У вЂ” 85 — О!010101 Х вЂ” У 145 Ю010001 Х- У 85 01010Ю1 Можно составить таблицы сложения и вычитания восьмеричных и шестнадцатеричных чисел и чисел, представленных в системе счисления с любым другим основанием.
Однако мало кто из специалистов по вычислительной технике берется их запомнить. Если необходимость оперировать недесятичными числам н возникает у вас редко, то проще всего в таких случаях преобразовывать числа в десятичный вид, производить с ними требуемые вычисления и затем осуществлять обратное преобразование. С другой стороны, если вам часто приходится оперировать двоичными, восьмеричными и шестнадцатеричными числами, то вам следует попросить у Деда Мороза «ведьмин калькулятор» («Ьех са)си!ага»») фирм Тека« !п«1гцглепГ» или Саз!о, !Игра слов: англ, «!зех» в зависимости от контекста означает «ведьма» или «шестнадцатеричный». — Прин.
перев ) В случае, когда батарейка в вашем калькуляторе разрядится, можно воспользоваться простыми соображениями, облегчающими вычисления с недесятичными числами. Как правило, при сложении (нли вычитании) число в каждом разряде можно преобразовать в десятичный вид, выполнить с ними требуемое действие, а затем результат н значение переноса перевести в соответствующую недесятичную систему счисления. !Перенос возникает всякий раз, когда сумма в данном разряде оказывается равной основанию системы счисления или превосходит его.) Выполняя сложение десятичных чисел, мы пользуемся известными нам правилами суммирования в десятичной системе; новым является только то, что нам нужно научиться осуществлять переход от десятичных чисел к недесятичным и в обратную сторону.
Последовательность шагов, выполняемых в уме при сложении шестнадцатеричных чисел (Б«хаг7«с~та! аг1г1!Пап), имеет вид: 2.2. Восьмеричные ишеетнвдцвтеричиыечислв б9 1 1 О О 1 9 11 9 +12 7 14 6 1! ОО 19В9гв +С7Ебгв С Х Т 14 17 25 15 14 16+ 1 16+ 9 15 Е ! 9 Р Е1 9Р14 2.5. Представление отрицательных чисел До снх пор мы имели дело только с положительными числами. Существует много способов представления отрицательных чисел.
В повседневной практике мы используем систему представления чисел в прямом коде со знаком. Однако в большинстве компьютеров применяется одна из форм представления чисел в виде дополнения, о чем речь пойдет позднее. 2.5.1 Представление чисел в прямом коде со знаком 010!0101 =+85ш 0111111!з =+127 о 00000000 Ю 11010101 — -85 11111111з -127 В рассматриваемой системе число положительных и отрицательных целых ч исел одинаково. Величина целого числа, выраженная и битами, лежит в интервале от- 12" ' — 1) до+12" '-1), н существует два возможных представления нуля.
Предположим теперь, что мы хотим собрать цифровую логическую схему слазквния чисел в прямом коде са знаком (тйпвй-тийт!нов агИ«г). В схеме должна производиться проверка знаков слагаемых, для того чтобы определить, что делать с нх величинами. Если знаки одинаковые, то нужно сложить величины и результату присвоить тот же самый знак. Если знаки различны, то в схеме должно быть осуществлено сравнение величин, из большей величины должна быть вычтена меньшая и результату должен быть присвоен знак большей величины. Все эти «если», «сложнть», «вычесть» и «сравннть» приводят к сложной логической схеме. Сумматоры чисел, представленных в форме дополнения, много проще, как В системе представления чисел в прямом коде га знаком 1и8пвг!тайтгиг!в зузгвт) число состоит из величины и символа, указывающего на то, какой является зта величина: положительной или отрицательной.
Именно так мы обычно интерпретируем десятичные ч исла+98, — 57, +123 5 и — ! 3; мы также считаем, что в случае, если символ знака отсутствует, то знак имеет значение «+». Существует два возможных представления нуля: «+0» и « — 0», имеющие одно и то же значение. Применение системы представления чисел в прямом коде со знаком к двоичным числам сводится к добавлению еще одного двоичного разряда, служащего выражением знака (зн а«свого бита, з!дп Ь!г).