Раздел: Документация
0 ... 4 5 6 7 8 9 10 ... 39 Вычитание одного двоичного числа из другого В процессоре вычитание выполняется как операция сложения О 1 0 1 1 0 0 1 (=89) ") L..Q P ..L L 0 . O...L L j(= 51) О 0 1 0 0 1 1 0 (=38) О 1 О 1 1 О О 1 (=89) +) iXXVXXXXXJj (=-51) Заменяем вычитаемое отрицательным числом путем представления его в дополнительном коде U О О 1 О О 1 1 О (=38) 8-разрядный результат операции вычитания Перенос разряда игнорируется Заем разряда aj 0 0 1 1 0 0 1 1 (=51) \ О О 1 1 О О 1 1 (=51) -) LXOXDXOXLj (= 89) +) iXXXXXXXX (= -89) 110 110 10 (=-38) [Oj 1 1 0 1 1 0 1 0 (=-38) 8-разрядный результат вычисления Рис. 3.5. Вычитание двоичных чисел ем с отрицательным числом, которое является представлением вычитаемого в дополнительном коде. Результат обеих операций одинаков. На Рис. 3.56 показан пример, когда результат вычитания десятичных чисел (51-89) отрицательный. В этом случае при вычитании одного двоичного числа из другого занимается единица старшего разряда вычитаемого (заем разряда). Результатом операции является отрицательное двоичное число со знаком, представленное в дополнительном коде. При сложении с вычитаемым, представленным в дополнительном коде (см. правую часть рисунка), мы получим тот же результат. Итак, операция вычитания осуществляется процессором как операция сложения уменьшаемого с вычитаемым, представленным в дополнительном коде. 8-разрядный результат вычислений помещается в регистр А процессора. Умножение двоичных чисел Попробуем выполнить операцию умножения двоичного числа на 2. Порядок выполнения этой операции показан на Рис. 3.6а. Приятной неожиданностью оказывается то, что таблица умножения двоичных чисел состоит всего лишь из трех коротких строчек: 0x0 = 0; 0x1 = 0; 1x1 = 1. При умножении на 2 мы получили число, которое образуется в результате сдвига каждого разряда исходного двоичного числа влево на 1 разряд. Аналогично при умножении на 4 происходит сдвиг каждого разряда влево на 2 разряда, при умножении на 8 - на 3 разряда и т. д. А что происходит при умножении, например, на 6? На Рис. 3.66 показана операция умножения двоичного числа на 6 (второй множитель также представлен в двоичном виде). На Рис. З.бв показан другой способ умножения на 6, который заключается в сложении результатов двукратного и четырехкратного увеличения исходного числа. Итак, рассмотрев приведенные выше примеры, мы выяснили, что умножение двоичных чисел осуществляется с помощью операций сложения и сдвига всех разрядов исходного числа влево. 3 2При всех указанных выше досто- ШЕСТНАДЦАТЕРИЧНАЯ инствах двоичные числа имеют один СИСТЕМА СЧИСЛЕНИЯ досадный недостаток - необходимость использования большого количества разрядов. Преодолеть это неудобство позволяет применение шестнадцатеричных чисел. В шестнадцатеричной системе каждый разряд может быть представлен шестнадцатью цифрами. Однако, поскольку в нашем распоряжении имеется лишь десять арабских цифр (0...9), для обозначения остальных шести цифр принято пользоваться буквами латинского алфавита от А до F. Так, одиннадцатой цифре соответствует буква А, двенадцатой - В, тринадцатой - С, четырнадцатой - D, пятнадцатой - Е, шестнадцатой - F. Если мы посмотрим на Табл. 3.1, где показано соотношение между первыми шестнадцатью числами в двоичной, десятичной и Шестнадцатеричной системах, то увидим, что одному разряду шест-надцатеричного числа соответствуют 4 разряда двоичного числа. Следовательно, для представления 8-разрядных двоичных чисел достаточно всего лишь двух шестнадцатеричных разрядов, что значительно сокращает запись числа. умножение двоичного числа на 2
Все разряды сдвигаются влево \на 1 позицию умножение двоичного числа на 6 0 0 0 1 1 0 1 1 (=27) х1 1 0 (=6) 00000000 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 1 I 1 0 1 0 0 0 1 0 (= 162) еще один способ умножения на 6 10 0 0 1 1 0 1 1 0 0 110 110 +) 0 1 1 0 1 1 о о I 1 0 1 0 0 0 1 о ... увеличение в 2 раза (сдвиг влево на 1 разряд) ... увеличение в 4 раза (сдвиг влево на 2 разряда) ...увеличение в 6 раз Рис. 3.6. Умножение двоичных чисел Достаточно запомнить только эту таблицу Таблица 3.1. Соответствие между числами двоичной, десятичной и щестнадцатеричной систем счисления
Для того чтобы отличить шестнадцатеричное число от чисел, записанных в других системах, запись кода числа дополняют буквой латинского алфавита Н (заглавная буква слова Hexadecimal - шест-надцатеричный). При этом запись шестнадцатеричного числа принимает следующий вид: 6DH, 59Н и т. п. Кроме того, перед шест-надцатеричным числом, начинающимся с символов A...F, принято записывать цифру «О». Например, запись 0В6Н соответствует шест-надцатеричному числу В6 (что равно 10110110 в двоичной системе или 182 - в десятичной). Примеры Как читать числа (ноль, один, один, ноль, один, один, ноль, один) Двоичное 0 110 110 1 Шестнадца-теричное число 6D (шесть, дэ) Двоичное 0 10 110 0 1 число 1 , I I , I 59 з £ Каждые 4 разряда двоичного числа преобразуются в 1 цифру шестнадцатеричного числа ( = 64 + 32 + 8 + 4 + 1 = 109) ( = 6x16+ 13 = 109) 1 0 1 10 1 1 Читать и записывать числа в шестнадцатеричной системе гораздо легче! 3. Микрокомпьютерная математика 3 3 Как мы убедились выше, для ДВОИЧНО-ДЕСЯТИЧНЫЙ преобразования числа из двоичной КОД (BCD)системы в привычную для нас деся- тичную форму необходимо произвести определенные вычисления. Чтобы упростить эти вычисления, был введен так называемый код BCD. BCD - это сокращение английского термина Binary Coded Decimal, который обозначает представление десятичного числа двоичными цифрами. Двоичное число, каждые 4 разряда которого выражают одну цифру десятичного числа, и есть код BCD. Будучи представленным в коде BCD, 2-разрядное десятичное число становится 8-разрядным, а 3-разрядное - 12-разрядным. Рассмотрим это преобразование на примере десятичного числа 69. В соответствии с определением кода BCD каждую из значащих цифр (6 и 9) следует преобразовать в 4-разрядное двоичное число. Так как десятичному числу 6 соответствует двоичное число оно, а числу 9 - число 10010 (см. Табл. 3.1), представлением числа 69 в коде BCD является число 01101001. Учитывая простоту преобразования десятичного числа в код BCD, последний часто используется в качестве промежуточного формата представления данных при вводе в микрокомпьютер или когда результаты вычислений, произведенных микрокомпьютером, требуется представить в десятичном виде. Мы рассмотрели различные представления чисел, используемых в микрокомпьютере, и простые арифметические операции с двоичными числами. Теперь давайте рассмотрим следующую проблему: допустим, мы имеем 8-разрядное число 10010110. Как определить, что это за число? Может быть, это положительное двоичное число, а может быть, отрицательное двоичное число со знаком. Не исключено также, что оно представлено в дополнительном коде или коде BCD. Прежде чем мы ответим на этот вопрос, давайте посмотрим на Рис. 3.7, где показаны различные варианты «расшифровки» одной и той же записи 8-разрядного числа, по виду напоминающего двоичное. В зависимости от того, с каким форматом числа мы имеем дело, при переводе в десятичную систему оно может принимать значения, равные 150, -106 или 96. И никто не сможет определить, какое из этих значений правильное, кроме того, кто при составлении про- 3.3. Двоично-десятичный код (BCD) "1 Одинаковые по форме 8-разрядные числа могут иметь разные значения 8-разрядное число, записанное в форме двоичного числа 10 0 10 110 а Положительное двоичное число По правилам преобразования двоичного числа в десятичное: 128 + 16 +4 + 2+= 1501 б Двоичное число со знаком По правилам представления в дополнительном коде: 0 110 10 0 1 + )1 0 1 1 0 1 0 1 0 (= 106) При преобразовании в дополнительный код изменяется знак. Так как мы получили +106, то исходное число было равно -106 в Код BCD По правилам преобразования кода BCD в десятичное число, 10 0 10 110 11 I Рис. 3.7. Различные интерпретации одной и той же записи 8-разрядного числа граммы для микрокомпьютера определил, в каком формате будут записаны те или иные числа. Именно пользователь решает, напри-Мер, что переменная .выражается только положительными двоичными числами, переменная Р представляет собой двоичные числа со знаком, а переменная Z представлена в коде BCD. Тогда при составлении программы он должен позаботиться о том, чтобы значения этих переменных обрабатывались в соответствии с правилами, Предусмотренными именно для этих случаев. 0 ... 4 5 6 7 8 9 10 ... 39
|