Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 18
Текст из файла (страница 18)
8 приведены примеры применения этого метода при делении десятичных и двоичных чисел без знака (ипз(йпе«(«!!зм(ап). В обоих случаях мы мысленно сравниваемм приведенное делимое с величинами, кратными делителю, для определения того, какое именно кратное сдвинутого делителя надо вычесть. В случае десятичных чисел мы сначала выбираем значение 11 как наибольшее кратное, меньшее 21, а затем берем 99 как наибольшее кратное, меньшее 107. В двоичном случае выбор несколько проще, поскольку выбирать приходится всего лишь между нулем и самим делителем.
Табл. 2.8. Пример деления столбиком !001! !01! !11011001 !011 19 !! )217 11 !07 99 8 частное делимое сдвинутый делитель 010! 0000 приведенное делимое сдвинутый делитель 1О!О 0000 приведенное делимое сдвинутый делитель приведенное делимое сдвинутый делитель 10100 !01! 10011 !01! приведенное делимое сдвинутый делитель остаток Методы деления двоичных чисел представляют собой нечто дополнительное по отношению к методам двоичного умножения.
Типичный алгоритм деления имеет дело с (п+т)-разрядным делимым и п-разрядным делителем; результатомм его действия становятся т-разрядное частное и п-разрядный остаток. Переполнение при делении (й«««з«ап огег(1 он«) наступает, если делитель равен нулю или в том случае, когда для представления частного потребовалось бы больше, чем т битов. У большинства компьютеров в блоках, выполняющих деление, принято и = т. Деление чисел со знаком (з«8пе«7 йг«з(оп) можно выполнить, используя алгоритм деления чисел без знака, по обычным школьным правилам: осуществляем деление величин без знака и полагаем частное положительным, когда операнлы имеют одинаковые знаки, и отрицательным, если их знаки различны. Остаток имеет тот же знак, что и делимое.
Как и в случае умножения, существуют специальные приемы непосредственного выполнения деления чисел, представленных в дополнительном коде; часто именно такие приемы реализуются в блоках деления в компьютерах(см. Обзор литературы). Т4 Глава 2. Числовые системы и коды 2.10. Двоичные коды десятичных чисел Несмотря на то, что двоичные числа являются наиболее подходящими для вычислений в цифровой системе, большинство людей все еще предпочитают иметь дело с десятичными числами.
В результате внешние интерфейсы цифровой системы индицируют и позволяют считывать десятичные числа, а некоторые цифровые устройсгва и в самом деле оперируют с десятичными числами. Необходимость представления человеку десятичных чисел не приводит к изменению основного принципа работы цифровых электронных схем: они обрабатывают все же сигналы, принимающие лишь одно из лвух значений, которые мы называем 0 и 1. Поэтому десятичное число представляется в цифровой системе строкой битов. различные комбинации значений битов в этой строке служат выражением различных десятичных чисел. Если, например, использовать строку из 4 битов для представления десятичного числа, то комбинацию битов 0000 можно поставить в соответствие десятичной цифре О, комбинацию 0001 — цифре 1, комбинацию 0010 — цифре 2 и т.
д. Набор строк, состоящих из п битов, в котором различные строки представляют различные числа или другие объекты, называегся кодаи (сочв). Отдельная комбинация из п двоичных цифр носит название кодового слова (свае згоп!). Как мы увидим на примерах десятичных кодов в этом параграфе, между значениями битов в кодовом слове и тем, выражением чего является зто слово, может существовать арифметическое соотношение, но может н не существовать. Кроме того, код с п-битовыми строками не обязательно содержит 2" возможных кодовых слов. Для представления одной десятичной цифры нужно, по меньшей мере, четыре бита. Можно миллиардами различных способов выбрать десять 4-разрядных кодовых слов, ио наиболее употребительными являются десятичные коды, перечисленные в табл.
2.9. Биномидльные коэФФициенты Число различных способов выбрать т элементов из п выражается биноииальи п'. ным коэффициентом ! ), равным,, Существует ! 6) различных п. способов выбрать 10 четырехразрядных кодовых слов из 16 и 1О! способов установить соответствие между каждым из выбранных наборов и десятью циф- 16! рами. Следовательно, имеется — 10' или 29 059430 400 различных 4-раз- 10! 6! рядных десятичных кодов.
Возможно, самым «естественным» десятичным кодом являются двоична-десятичные числа (Ыпагу-сайег1 Асс~та(, 8СО); в этом коде цифрам от О до 9 соответствуют 4-разрядные двоичные эквиваленты без знака от ОООО до 1001. Кодовые слова от10!Одо)!11неиспользуются. Преобразованиедесятичныхчиселвдвоично десятичныее тривиально и состоит в простой подстановке четырех битов на место каждой десятичной цифры; аналогично выполняется и обратное преобразование В ряде 2.
10. Двоичные коды десятичных чисел 75 компьютерных программ один 8-разрядный байт содержит два двоич но-десятнчных числа; такие деон«но-десягличные числа называют упакованными (расяев-ВС0 гергезел(а(!оп). Таким образом, двоична-десятичное число, представленное одним байтом, может иметь значение от 0 до 99 в противоположность обычному 8-разрядному двоичному числу без знака из интервала от 0 до 255.
Двоично-десятичные числа с любым количеством цифр можно представить последовательностью байтов из расчета по одному байту на каждые две цифры. Табл. 2.9. Десятичные коды Десятичная ДвоичиоКод Кол с Дяоичиои«Р десетичиый 2421 избытка»» Л пегепичиый кси( (0421) Код «1 из 10 Неиспользуемгяе кодовые слова 0000000000 00000000 ! 1 0000000101 0000000 ! 10 0000000! 11 00000(Ю 000000! 0000010 00000!! 000010! Как и в случае двоичных чисел, можно многими способами представлять отрицательные двоично-десятичные числа. У двоично-десятичных чисел со знаюм должен быть один лишний разряд для знака Наиболее распространенными являются представления в прямом юде со знаком и в дополнительном десятичном коде. При представлении двоично-десятичных чисел в прямом коде со знаком последовательность битов для знака произвольна; при представлении в дополнительном коде набором битов 0000 указывается знак «плюс», а набором 1001 — знак «минус».
Сложение двоична-десят(гчных чисел (ВС!) ас гбпол) в одном разряде подобно сложению 4-разрядных двоичных чисел без знака за исключением необходимости производить коррекцию, когда результат превышает 1001 Коррекция результата осушествляется добавлением 6; приведем примеры. ОООО 0001 0010 0011 0100 0101 О!1О 011! 1000 1001 1О!О !011 1100 1101 1110 1!!! 00(Ю 0001 0010 (Н)1 1 0100 1011 1! 00 1101 !1!О 111! 0101 0110 0111 1000 !001 !010 0011 О!00 010! 0110 01!1 1000 1001 1010 101 ! 1100 0000 0001 00!О !!01 1110 !!!1 0100001 0100010 О!00100 О!О!000 О! 1(ННЮ 100000! !0000!О 1000100 100!000 1010000 100(НЮ0000 0 ! 00000(НЮ (Ю ! 0000000 0001000000 00001000(Ю 0000010000 0000001000 0000000100 00000000 ! О 0000000001 70 Глава 2.
Числовые системы и коды 5 0101 + 9 + 1001 14 1110 + 0110 — коррекция 10+ 4 1 0100 4 0100 + 5 + 0101 9 1001 9 1001 +9 +1001 18 1 0010 + 0110 — коррекция 10+ 8 1 1000 8 1000 + 8 + 1000 16 ~ ОООО + 0110 — коррекция 1О+ б 1 0110 Отметим, что при сложении двух цифр в двоична-десятичном коде перенос в следующий разряд происходит в том случае, когда он возникает непосредственно при двоичном сложении, либо при осуществлении коррекции. Во многих компьютерах для выполнения арифметических действий с упакованными двоична-десятичными числами имеются специальные команды, которые автоматически производят коррекцию и учитывают перенос, Двоична-десятичный код является взвешенным кодом (ше1дйге~1 сас1е), поскольку каждую десятичную цифру можно получить из ее кодового слова, приписывая отдельным битам этого слова определенный вес.
Для двоична-десятичных чисел веса битов имеют следующие значения: 8, 4, 2 и 1; по этой причине этот код иногда называют кодом 8421 (8421 саде). Другой набор весов дает кад 2421 12421 сас1е), приведенный в табл. 2.9. Достоинство этого кода состоит в том, что он является самадапалняющим кодам (зе1/-сатр!етеп11пй саде); это означает, что кодовое слово любой цифры в обратном десятичном коде можно получить, беря обратные значения отдельных битов в кодовом слове данной цифры. Другим самодополняюшим кодом в табл.2.9 является кад с избыткам 3 (ехсезз- 3 саде).
Хотя это не взвешенный код, все же имеется арифметическая связь между ним и двоична-десятичным кодом: в коде с избытком 3 кодовое слово каждой десятичной цифры равно соответствующему кодовому слову двоична-десятичногоо кода плюс 0011 . Поскольку кодовые слова в коде с избытком 3 следуют одно за другим в естественной двоичной последовательности, легко строить стандартные двоичные счетчики для счета в этом коде, как это будет продемонстрировано парис.
8.37. У десятичных кодов может быть больше четырех битов; например, слова двоична-пятеричнага кода (Ьщи1пагу саде) состоят из семи битов 1см. табл. 2.9). Первые два бита в кодовом слове показывают, какому из двух интервалов принадлежит число: от 0 до 4 или от 5 до 9; последние пять битов указывают, какое именно число из пяти чисел данного интервала представлено этим словом. Потенциальным достоинством использования в коде большего числа битов, чем это минимально необходимо, является возможность обнаружения ошибок. При случайном изменении любого одного бита в кодовом слове двоична-пятеричного кода получается кодовое слово, не представляющее никакой десятичной цифры, поэтому такое слово можно отметить как ошибочное, Из 128 возмож- 2.11.
Код грея 77 ных 7-разрядных двоичных слов только 10 являются собственно кодовыми словами и распознаются как десятичные цифры; все остальные можно считать ошибочными, если они возникают. В последнем столбце табл. 2.9 приведен пример самого разреженного кода для десятичных цифр, называемого кодом «1 из 10» (1-оийо1-10 сог1е): в нем используются 1О из 1024 возможных 1О-разрядных двоичных кодовых слов.