Десятичное число с двоичным кодом - Binary-coded decimal

А двоичные часы может использовать Светодиоды для выражения двоичных значений. В этих часах каждый столбец светодиодов показывает десятичное число в двоичном коде традиционного шестидесятеричный время.

В вычисление и электронный системы, двоично-десятичный (BCD) является классом двоичный кодировки десятичный числа, где каждый цифра представлен фиксированным количеством биты обычно четыре или восемь. Иногда специальные битовые комбинации используются для знак или другие признаки (например, ошибка или переполнение).

В байт -ориентированные системы (т.е. большинство современных компьютеров), термин распакованный BCD[1] обычно подразумевает полный байт для каждой цифры (часто включая знак), тогда как упакованный BCD обычно кодирует две цифры в одном байте, используя тот факт, что четырех битов достаточно для представления диапазона от 0 до 9. Точное 4-битное кодирование, однако, может отличаться по техническим причинам (например, Превышение-3 ).

Десять состояний, представляющих цифру BCD, иногда называют тетрады[2][3] (для клев обычно необходим для их удержания, также известен как тетрад), а неиспользуемые, все равно -состояния названы псевдотетрада (e) s [де ],[4][5][6][7][8] псевдодесятичные знаки[3] или же псевдодесятичные цифры.[9][10][nb 1]

Главное достоинство BCD по сравнению с двоичным позиционные системы, заключается в более точном представлении и округлении десятичных величин, а также в простоте преобразования в обычные удобочитаемые представления. Его основные недостатки - небольшое увеличение сложности схем, необходимых для реализации базовой арифметики, а также немного менее плотное хранение.

BCD использовался во многих ранних десятичные компьютеры, и реализован в наборе команд машин, таких как IBM System / 360 серия и ее потомки, Корпорация цифрового оборудования с VAX, то Берроуз B1700, и Motorola 68000 -серии процессоров. BCD как таковой не так широко используется, как в прошлом, и больше не реализован в наборах команд новых компьютеров (например, РУКА ); x86 не поддерживается его инструкции BCD в длинный режим больше. Однако десятичный фиксированная точка и плавающая точка форматы по-прежнему важны и продолжают использоваться в финансовых, коммерческих и промышленных вычислениях, где тонкое преобразование и дробное преобразование ошибки округления которые присущи двоичным представлениям с плавающей запятой, недопустимы.[11]

Фон

BCD использует тот факт, что любое десятичное число может быть представлено четырехбитным шаблоном. Самый очевидный способ кодирования цифр - Натуральный BCD (NBCD), где каждая десятичная цифра представлена ​​соответствующим четырехбитным двоичным значением, как показано в следующей таблице. Это также называется кодировкой «8421».

Десятичная цифраBCD
8421
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001

Эту схему также можно обозначить как Простое двоично-десятичное число (SBCD) или же BCD 8421, и является наиболее распространенной кодировкой.[12] Другие включают так называемое кодирование «4221» и «7421» - названное в честь веса, используемого для битов - и «Превышение-3 ".[13] Например, цифра 6 BCD, 0110'b в обозначении 8421, является 1100'b в 4221 (возможны две кодировки), 0110'b в 7421, а в Excess-3 - 1001'b ().

4-битные коды BCD и псевдотетрады
КусочекМасса 0 1 2 3 4 5 6 7 8 9101112131415 Комментарий
480000000011111111Двоичный
340000111100001111
220011001100110011
110101010101010101
Имя0123456789101112131415Десятичный
8 4 2 1 (XS-0)0123456789101112131415[14][15][16][17][nb 2]
7 4 2 10123456 789     [18][19][20]
Айкен (2 4 2 1)01234      56789[14][15][16][17][№ 3]
Превышение-3 (XS-3)-3-2-10123456789101112[14][15][16][17][nb 2]
Превышение-6 (XS-6)-6-5-4-3-2-10123456789[18][nb 2]
Прыжок-2 (2 4 2 1)01      23456789[16][17]
Прыжок-8 (2 4 2 1)01234567      89[21][22][16][17][№ 4]
4 2 2 1 (I)0123  45    6789[16][17]
4 2 2 1 (II)0123  45  67  89[21][22]
5 4 2 101234   56789   [18][14][16][17]
5 2 2 10123  4 5678  9 [14][16][17]
5 1 2 10123   45678   9[19]
5 3 1 101 234  56 789  [16][17]
Белый (5 2 1 1)01 2 3 456 7 8 9[23][18][14][16][17]
5 2 1 101 2 3 45 6 7 89[24]
 0123456789101112131415
Магнитная лента 1234567890     [15]
Павел 1326754 0  89  [25]
серый0132675415141213891110[26][14][15][16][17][nb 2]
Glixon013267549   8   [27][14][15][16][17]
4 3 1 101 23  54  67 89[19]
LARC01 2  4356 7  98[28]
Клар01 2  4398 7  56[2][3]
Петерик (РАЭ) 132 04  867 95 [29][30][№ 5]
О'Брайен I (Ватты)0132  4 9867  5 [31][14][16][17][№ 6]
Томпкинс I0132  4  9  8756[32][14][16][17]
Липпель0123  4  9  8765[33][34][14]
О'Брайен II 0214 3  9785 6 [31][14][16][17]
Томпкинс II  0143 2 79856  [32][14][16][17]
Избыток-3 Серый-3-20-1431212119105687[16][17][20][№ 7][nb 2]
6 3 −2 −1 (I)    3210 5489 76[28][35]
6 3 −2 −1 (II)0   321 654 987 [28][35]
8 4 −2 −10   43218765   9[28]
Lucal0151411232138769411105[36]
Каутц I0  2 513 79 86 4[18]
Каутц II 94 1 328 67 05 [18][14]
Сасскинд I 0 1 432 9 85 67[34]
Сасскинд II 0 1 9 84 325 67[34]
 0123456789101112131415

В следующей таблице представлены десятичный цифры от 0 до 9 в различных системах кодирования BCD. В заголовках стоит знак "8421"указывает вес каждого бита. В пятом столбце (" BCD 84−2−1 "), два веса отрицательны. Также показаны коды символов ASCII и EBCDIC для цифр, которые являются примерами зонального BCD.

 
Цифра
BCD
8421
Стибиц код или Превышение-3Айкен-Код или BCD
2421
BCD
84−2−1
IBM 702, IBM 705, IBM 7080, IBM 1401
8421
ASCII
0000 8421
EBCDIC
0000 8421
0000000110000000010100011 00001111 0000
1000101000001011100010011 00011111 0001
2001001010010011000100011 00101111 0010
3001101100011010100110011 00111111 0011
4010001110100010001000011 01001111 0100
5010110001011101101010011 01011111 0101
6011010011100101001100011 01101111 0110
7011110101101100101110011 01111111 0111
8100010111110100010000011 10001111 1000
9100111001111111110010011 10011111 1001

Поскольку большинство компьютеров обрабатывают данные в 8-битном формате байты, можно использовать один из следующих методов для кодирования числа BCD:

  • Без упаковки: Каждая десятичная цифра кодируется в один байт, при этом четыре бита представляют число, а остальные биты не имеют значения.
  • Упакованы: Две десятичные цифры кодируются в один байт, с одной цифрой в наименее значимой клев (биты с 0 по 3 ) и другое число в старшем полубайте (биты с 4 по 7).[№ 8]

В качестве примера кодирования десятичного числа 91 использование распакованного BCD приводит к следующему двоичному шаблону из двух байтов:

Десятичный: 9 1 Двоичный: 0000 1001 0000 0001

В упакованном BCD одно и то же число поместится в один байт:

Десятичный: 9 1 Двоичный: 1001 0001

Следовательно, числовой диапазон для одного неупакованного байта BCD составляет от нуля до девяти включительно, тогда как диапазон для одного упакованного байта BCD составляет от нуля до девяноста девяти включительно.

Для представления чисел, превышающих диапазон одного байта, может использоваться любое количество смежных байтов. Например, для представления десятичного числа 12345 в упакованном BCD, используя прямой порядок байтов формат, программа будет кодировать следующим образом:

Десятичный: 0 1 2 3 4 5 Двоичный: 0000 0001 0010 0011 0100 0101

Здесь старший полубайт самого старшего байта закодирован как ноль, поэтому число сохраняется как 012345 (но процедуры форматирования могут заменять или удалять ведущие нули). Упакованный BCD более эффективно использует хранилище, чем распакованный BCD; кодирование того же числа (с ведущим нулем) в распакованном формате потребует вдвое больше памяти.

Смещение и маскировка операции используются для упаковки или распаковки упакованной цифры BCD. Другой побитовые операции используются для преобразования числа в эквивалентный ему битовый шаблон или обратного процесса.

Упакованный BCD

В упакованный BCD (или просто упакованная десятичная дробь[37]), каждый из двух грызет каждого байта представляют собой десятичную цифру.[№ 8] Упакованный BCD используется, по крайней мере, с 1960-х годов и с тех пор реализован во всем аппаратном обеспечении мэйнфреймов IBM. Большинство реализаций прямой порядок байтов, то есть с более значимой цифрой в верхней половине каждого байта и с крайним левым байтом (находящимся по наименьшему адресу памяти), содержащим наиболее значимые цифры упакованного десятичного значения. Младший полубайт самого правого байта обычно используется как знаковый флаг, хотя в некоторых представлениях без знака знаковый флаг отсутствует. В качестве примера, 4-байтовое значение состоит из 8 полубайтов, при этом верхние 7 полубайтов хранят цифры 7-значного десятичного значения, а самый низкий полубайт указывает знак десятичного целочисленного значения.

Стандартные значения знаков - 1100 (шестнадцатеричный C) для положительного (+) и 1101 (D) для отрицательного (-). Это соглашение происходит от поля зоны для EBCDIC персонажи и подписанный оверпанс представление. Другие допустимые знаки: 1010 (A) и 1110 (E) для положительного и 1011 (B) для отрицательного. Процессоры IBM System / 360 будут использовать знаки 1010 (A) и 1011 (B), если в PSW установлен бит A, для стандарта ASCII-8, который никогда не проходил. Большинство реализаций также предоставляют беззнаковые значения BCD со знаком полубайта 1111 (F).[38][39][40] ILE RPG использует 1111 (F) для положительного и 1101 (D) для отрицательного.[41] Они соответствуют зоне EBCDIC для цифр без перегиба знака. В упакованном BCD число 127 представлено как 0001 0010 0111 1100 (127C), а -127 представлено как 0001 0010 0111 1101 (127D). В системах Берроуза используется 1101 (D) для отрицательного значения, а любое другое значение считается положительным значением знака (процессоры нормализуют положительный знак до 1100 (C)).

Знак
Цифра
BCD
8 4 2 1
ЗнакПримечания
А1 0 1 0+ 
B1 0 1 1 
C1 1 0 0+Предпочтительный
D1 1 0 1Предпочтительный
E1 1 1 0+ 
F1 1 1 1+Неподписанный

Независимо от того, сколько байтов в ширину слово всегда есть четное количество полубайтов, потому что в каждом байте их два. Поэтому слово п байты могут содержать до (2п) -1 десятичная цифра, которая всегда является нечетным числом цифр. Десятичное число с d цифры требует 1/2(d+1) байты памяти.

Например, 4-байтовое (32-битное) слово может содержать семь десятичных цифр плюс знак и может представлять значения в диапазоне от ± 9 999 999. Таким образом, число -1 234 567 имеет ширину 7 цифр и кодируется как:

0001 0010 0011 0100 0101 0110 0111 11011    2    3    4    5    6    7    −

Как и символьные строки, первый байт упакованной десятичной дроби - с двумя старшими цифрами - обычно сохраняется по младшему адресу в памяти, независимо от порядок байтов машины.

Напротив, 4-байтовый двоичный два дополнения целое число может представлять значения от -2 147 483 648 до +2 147 483 647.

Хотя упакованный BCD не обеспечивает оптимального использования хранилища (используя примерно на 20% больше памяти, чем двоичная запись для хранения тех же чисел), преобразование в ASCII, EBCDIC или различные кодировки Unicode все еще тривиально, так как не требуется никаких арифметических операций. Требования к дополнительному хранилищу обычно компенсируются необходимостью обеспечения точности и совместимости с калькулятором или ручными вычислениями, которые обеспечивает десятичная арифметика с фиксированной запятой. Более плотные упаковки BCD Существуют, которые избегают штрафов за хранение, а также не требуют арифметических операций для обычных преобразований.

Упакованный BCD поддерживается в КОБОЛ язык программирования как тип данных COMPUTATIONAL-3 (расширение IBM, принятое многими другими поставщиками компиляторов) или PACKED-DECIMAL (часть стандарта COBOL 1985 года). Поддерживается в PL / I как «ФИКСИРОВАННАЯ ДЕСЯТАЯ ЧИСЛА». Помимо IBM System / 360 и более поздних совместимых мэйнфреймов, упакованный BCD реализован в собственном наборе команд оригинального VAX процессоры из Корпорация цифрового оборудования и некоторые модели SDS Sigma серии мэйнфреймы, и является собственным форматом для Корпорация Берроуз Линия мэйнфреймов Medium Systems (произошла от 1950-х гг. Электродата серии 200 ).

Дополнение к десяти представления отрицательных чисел предлагают альтернативный подход к кодированию знака упакованных (и других) чисел BCD. В этом случае положительные числа всегда имеют старшую значащую цифру от 0 до 4 (включительно), в то время как отрицательные числа представлены дополнением до 10 соответствующего положительного числа. В результате эта система позволяет 32-битным упакованным числам BCD находиться в диапазоне от -50,000,000 до +49,999,999, а -1 представляется как 99999999. (Как и в случае двоичных чисел с дополнительным двоичным кодом, диапазон не является симметричным относительно нуля).

Упакованный десятичный формат с фиксированной запятой

Фиксированная точка десятичные числа поддерживаются некоторыми языками программирования (такими как COBOL, PL / I и Ада ). Эти языки позволяют программисту указывать неявную десятичную точку перед одной из цифр. Например, упакованное десятичное значение, закодированное байтами 12 34 56 7C, представляет значение с фиксированной точкой +1 234,567, когда подразумеваемая десятичная точка находится между 4-й и 5-й цифрами:

12 34 56 7C12 34.56 7+

Десятичная точка фактически не хранится в памяти, поскольку упакованный формат хранения BCD не предусматривает ее. Его местоположение просто известно компилятору, и сгенерированный код действует соответственно для различных арифметических операций.

Кодировки с более высокой плотностью

Если для десятичной цифры требуется четыре бита, то для трех десятичных цифр требуется 12 бит. Однако, поскольку 210 (1,024) больше 103 (1000), если три десятичных цифры кодируются вместе, требуется только 10 бит. Две такие кодировки Кодировка Чен – Хо и плотно упакованная десятичная дробь (DPD). Последнее имеет то преимущество, что подмножества кодирования кодируют две цифры в оптимальных семи битах и ​​одну цифру в четырех битах, как в обычном BCD.

Зональный десятичный

Некоторые реализации, например IBM системы мэйнфреймов, поддержка зонный десятичный числовые представления. Каждая десятичная цифра хранится в одном байте, а четыре младших бита кодируют цифру в двоично-десятичной форме. Старшие четыре бита, называемые битами «зоны», обычно устанавливаются на фиксированное значение, так что байт содержит символьное значение, соответствующее цифре. Системы EBCDIC используют значение зоны 1111 (шестнадцатеричное F); это дает байты в диапазоне от F0 до F9 (шестнадцатеричный), которые являются кодами EBCDIC для символов от «0» до «9». Точно так же системы ASCII используют значение зоны 0011 (шестнадцатеричное 3), давая символьные коды от 30 до 39 (шестнадцатеричное).

Для зонированных десятичных значений со знаком крайний правый (наименее значимый) полубайт зоны содержит знаковую цифру, которая представляет собой тот же набор значений, который используется для упакованных десятичных чисел со знаком (см. Выше). Таким образом, зонированное десятичное значение, закодированное как шестнадцатеричные байты F1 F2 D3, представляет десятичное значение со знаком -123:

F1 F2 D31 2 −3

Таблица преобразования зональной десятичной дроби EBCDIC

BCD цифраШестнадцатеричныйEBCDIC Символ
0+C0A0E0F0{ (*)  (*)0
1+C1A1E1F1А~ (*) 1
2+C2A2E2F2BsS2
3+C3A3E3F3CтТ3
4+C4A4E4F4DтыU4
5+C5A5E5F5EvV5
6+C6A6E6F6FшW6
7+C7A7E7F7граммИксИкс7
8+C8A8E8F8ЧАСуY8
9+C9A9E9F9яzZ9
0−D0B0  }  (*)^  (*)  
1−D1B1  J   
2−D2Би 2  K   
3−D3B3  L   
4−D4B4  M   
5−D5B5  N   
6−D6B6  О   
7−D7B7  п   
8−D8B8  Q   
9−D9B9  р   

(*) Примечание. Эти символы различаются в зависимости от местного персонажа. кодовая страница параметр.

Зональный десятичный разделитель с фиксированной точкой

Некоторые языки (такие как COBOL и PL / I) напрямую поддерживают зонированные десятичные значения с фиксированной точкой, присваивая неявную десятичную точку в некотором месте между десятичными цифрами числа. Например, учитывая шестибайтовое зональное десятичное значение со знаком с подразумеваемой десятичной точкой справа от четвертой цифры, шестнадцатеричные байты F1 F2 F7 F9 F5 C0 представляют значение +1 279,50:

F1 F2 F7 F9 F5 C01 2 7 9. 5 +0

BCD в компьютерах

IBM

IBM использовала термины Десятичный код обмена с двоичным кодом (BCDIC, иногда просто BCD), для 6-битного буквенно-цифровой коды, представляющие числа, заглавные буквы и специальные символы. Некоторая вариация BCDIC альфамеры используется в большинстве ранних компьютеров IBM, включая IBM 1620 (введен в 1959 г.), IBM 1400 серии, и неДесятичная архитектура члены IBM 700/7000 серии.

Серия IBM 1400 - это машины с символьной адресацией, каждая ячейка помечена шестью битами. В, А, 8, 4, 2 и 1, плюс бит проверки нечетности (C) и бит словесной метки (M). Для кодирования цифр 1 через 9, B и А равны нулю, а числовое значение, представленное стандартным 4-битным BCD в битах 8 через 1. Для большинства других символов биты B и А получены просто из "пробивки зоны" "12", "11" и "0" в перфокарта код символа и биты 8 через 1 от 1 через 9 удары. Пробойник "12 зон" устанавливает оба B и А, комплект "11 зон" Bи "0 зона" (0 удар в сочетании с любыми другими) А. Таким образом, письмо А, который (12,1) в формате перфокарты, кодируется (В, А, 1). Символ валюты $, (11,8,3) в перфокарте, был закодирован в памяти как (В, 8,2,1). Это позволяет схемам выполнять преобразование между форматом перфокарты и форматом внутреннего хранилища очень простым с учетом лишь нескольких особых случаев. Важным частным случаем является цифра 0в лице одинокого 0 вставьте карту и (8,2) в основной памяти.[42]

Память IBM 1620 организована в виде 6-битных адресных цифр, обычно 8, 4, 2, 1 плюс F, используется как бит флага и C, бит проверки нечетной четности. BCD альфамеры кодируются с использованием пар цифр, при этом «зона» в разряде с четным адресом и «цифра» в разряде с нечетным адресом, «зона» относится к 12, 11, и 0 «зональные удары», как в серии 1400. Аппаратные средства преобразования ввода / вывода преобразуют внутренние пары цифр во внешние стандартные 6-битные коды BCD.

В десятичной архитектуре IBM 7070, IBM 7072, и IBM 7074 альфамеры кодируются с использованием пар цифр (с использованием код два из пяти в цифрах, нет BCD) 10-значного слова с «зоной» в левой цифре и «цифрой» в правой цифре. Аппаратные средства преобразования ввода / вывода преобразуют внутренние пары цифр во внешние стандартные 6-битные коды BCD.

С введением Система / 360, IBM расширенный 6-битный BCD альфамеры в 8-битный EBCDIC, что позволяет добавлять гораздо больше символов (например, строчные буквы). Упакованный BCD переменной длины числовой Тип данных также реализован, обеспечивая машинные инструкции, которые выполняют арифметические операции непосредственно с упакованными десятичными данными.

На IBM 1130 и 1800, упакованный BCD поддерживается программным обеспечением с помощью коммерческого пакета подпрограмм IBM.

Сегодня данные BCD по-прежнему широко используются в процессорах и базах данных IBM, таких как IBM DB2, мэйнфреймы и Мощность6. В этих продуктах BCD обычно представляет собой зональный BCD (как в EBCDIC или ASCII), упакованный BCD (две десятичные цифры на байт) или «чистое» кодирование BCD (одна десятичная цифра сохраняется как BCD в младших четырех битах каждого байта) . Все они используются в аппаратных регистрах и процессорах, а также в программном обеспечении. Чтобы преобразовать упакованные десятичные дроби в выгружаемых таблицах EBCDIC в читаемые числа, вы можете использовать маску OUTREC FIELDS утилиты JCL DFSORT.[43]

Другие компьютеры

Серия Digital Equipment Corporation VAX-11 включает инструкции который может выполнять арифметические операции непосредственно с упакованными данными BCD и преобразовывать между упакованными данными BCD и другими целочисленными представлениями.[40] Упакованный формат BCD VAX совместим с форматом IBM System / 360 и более поздних совместимых процессоров IBM. В реализациях MicroVAX и более поздних VAX эта возможность отсутствует в ЦП, но сохранена совместимость кода с более ранними машинами за счет реализации отсутствующих инструкций в программной библиотеке, поставляемой операционной системой. Это вызывается автоматически через Обработка исключений когда встречаются несуществующие инструкции, так что программы, использующие их, могут выполняться без изменений на новых машинах.

В Intel x86 архитектура поддерживает уникальный 18-значный (10-байтовый) формат BCD которые могут быть загружены и сохранены из регистров с плавающей запятой, откуда могут выполняться вычисления.[44]

В Motorola 68000 серии имел инструкции BCD.[45]

В более поздних компьютерах такие возможности почти всегда реализуются в программном обеспечении, а не в наборе команд ЦП, но числовые данные в формате BCD по-прежнему чрезвычайно распространены в коммерческих и финансовых приложениях. Существуют уловки для реализации упакованных операций BCD и зональных десятичных операций сложения или вычитания с использованием коротких, но трудных для понимания последовательностей параллельной логики и двоичных арифметических операций.[46] Например, следующий код (написанный на C ) вычисляет беззнаковое 8-значное упакованное BCD сложение с использованием 32-битных двоичных операций:

uint32_t BCDadd(uint32_t а, uint32_t б){    uint32_t t1, t2;    // беззнаковые 32-битные промежуточные значения    t1 = а + 0x06666666;    t2 = t1 ^ б;                   // сумма без распространения переноса    t1 = t1 + б;                   // предварительная сумма    t2 = t1 ^ t2;                  // все двоичные биты переноса    t2 = ~t2 & 0x11111110;         // просто биты переноса BCD    t2 = (t2 >> 2) | (t2 >> 3);    // исправление    возвращаться t1 - t2;                // исправленная сумма BCD}

BCD в электронике

BCD очень распространен в электронных системах, где должно отображаться числовое значение, особенно в системах, состоящих исключительно из цифровой логики и не содержащих микропроцессор. Используя двоично-десятичный код, можно значительно упростить манипуляции с числовыми данными для отображения, если рассматривать каждую цифру как отдельную подсхему. Это гораздо больше соответствует физической реальности дисплейного оборудования - разработчик может выбрать использование ряда отдельных идентичных семисегментные дисплеи например, построить схему учета. Если бы числовые величины хранились и обрабатывались как чисто двоичные, для взаимодействия с таким дисплеем потребовались бы сложные схемы. Следовательно, в случаях, когда вычисления относительно просты, работа с BCD может привести к более простой системе, чем преобразование в двоичную систему и обратно. Большинство карманных калькуляторов делают все свои расчеты в формате BCD.

Тот же аргумент применим, когда оборудование этого типа использует встроенный микроконтроллер или другой небольшой процессор. Часто внутреннее представление чисел в формате BCD приводит к меньшему размеру кода, поскольку преобразование из или в двоичное представление может быть дорогостоящим для таких ограниченных процессоров. Для этих приложений некоторые небольшие процессоры имеют специальные арифметические режимы, которые помогают при написании подпрограмм, управляющих величинами BCD.[47][48]

Операции с BCD

Добавление

Возможно выполнение добавление сначала добавив в двоичном формате, а затем преобразовав в BCD. Преобразование простой суммы двух цифр может быть выполнено путем добавления 6 (то есть от 16 до 10), когда пятиразрядный результат добавления пары цифр имеет значение больше 9. Причина добавления 6 заключается в том, что есть 16 возможных 4-битных значений BCD (начиная с 24 = 16), но действительны только 10 значений (от 0000 до 1001). Например:

1001 + 1000 = 10001   9 +    8 =    17

10001 - это двоичное, а не десятичное представление желаемого результата, но наиболее значимая 1 («перенос») не может поместиться в 4-битное двоичное число. В BCD, как и в десятичном, не может быть значения больше 9 (1001) на цифру. Чтобы исправить это, к общей сумме добавляется 6 (0110), а затем результат обрабатывается как два полубайта:

10001 + 0110 = 00010111 => 0001 0111   17 +    6 =       23       1    7

Два полубайта результата 0001 и 0111 соответствуют цифрам «1» и «7». Это дает "17" в BCD, что является правильным результатом.

Этот метод можно расширить до добавления нескольких цифр, добавляя группы справа налево, распространяя вторую цифру как перенос, всегда сравнивая 5-битный результат каждой суммы пар цифр с 9. Некоторые процессоры предоставляют полуприкрытый флаг для облегчения арифметических корректировок BCD после операций двоичного сложения и вычитания.

Вычитание

Вычитание выполняется путем добавления десятичного дополнения к вычитаемое к уменьшаемое. Чтобы представить знак числа в BCD, число 0000 используется для обозначения положительное число, а 1001 используется для представления отрицательное число. Остальные 14 комбинаций - недопустимые знаки. Чтобы проиллюстрировать вычитание BCD со знаком, рассмотрим следующую задачу: 357 - 432.

В BCD со знаком 357 - это 0000 0011 0101 0111. Десятичное дополнение к 432 можно получить, взяв девять дополнений из 432, а затем прибавив еще один. Итак, 999 - 432 = 567 и 567 + 1 = 568. Если поставить перед 568 в BCD отрицательный знаковый код, можно представить число −432. Итак, -432 в BCD со знаком - это 1001 0101 0110 1000.

Теперь, когда оба числа представлены в BCD со знаком, их можно сложить вместе:

  0000 0011 0101 0111  0    3    5    7+ 1001 0101 0110 1000  9    5    6    8= 1001 1000 1011 1111  9    8    11   15

Поскольку BCD - это форма десятичного представления, некоторые приведенные выше суммы цифр недействительны. В случае, если существует недопустимая запись (любая цифра BCD больше 1001), добавляется 6 для генерации бита переноса и превращения суммы в действительную запись. Итак, добавление 6 к недопустимым записям приводит к следующему:

  1001 1000 1011 1111  9    8    11   15+ 0000 0000 0110 0110  0    0    6    6= 1001 1001 0010 0101  9    9    2    5

Таким образом, результат вычитания будет 1001 1001 0010 0101 (-925). Чтобы подтвердить результат, обратите внимание, что первая цифра - 9, что означает отрицательный результат. Это кажется правильным, поскольку 357–432 должны давать отрицательное число. Остальные полубайты представляют собой двоично-десятичный код, поэтому 1001 0010 0101 равно 925. Десятичное дополнение к 925 составляет 1000 - 925 = 75, поэтому вычисленный ответ равен -75.

Если складывается другое количество полубайтов (например, 1053 - 2), число с меньшим числом цифр должно быть сначала предварено нулями, прежде чем выполнять десятичное дополнение или вычитание. Таким образом, с 1053-2, 2 нужно сначала представить как 0002 в BCD, и нужно будет вычислить десятичное дополнение 0002.

Сравнение с чистым двоичным кодом

Преимущества

  • Многие нецелые значения, такие как десятичное число 0,2, имеют бесконечное представление разряда в двоичном формате (.001100110011 ...), но имеют конечное значение в десятичном виде с двоичным кодом (0,0010). Следовательно, система, основанная на десятичных представлениях десятичных дробей в двоичном коде, позволяет избежать ошибок при представлении и вычислении таких значений. Это полезно в финансовых расчетах.
  • Масштабировать в 10 раз просто.
  • Округление на границе десятичной цифры проще.Сложение и вычитание в десятичной дроби не требуют округления.
  • Выравнивание двух десятичных чисел (например, 1,3 + 27,08) - это простой и точный сдвиг.
  • Преобразование в символьную форму или для отображения (например, в текстовый формат, такой как XML, или управлять сигналами для семисегментный дисплей ) представляет собой простое сопоставление по цифрам и может быть выполнено в линейном (О (п)) время. Преобразование из чистого двоичный включает относительно сложную логику, которая охватывает цифры, а для больших чисел неизвестен алгоритм преобразования с линейным временем (см. Двоичная система счисления § Преобразование в другие системы счисления и обратно ).

Недостатки

  • Некоторые операции сложнее реализовать. Сумматоры требуется дополнительная логика, чтобы заставить их обернуться и сгенерировать перенос раньше. Для сложения BCD требуется на 15-20% больше схем по сравнению с чистым двоичным кодом.[нужна цитата ] Умножение требует использования алгоритмов, которые несколько сложнее, чем сдвиг-маска-сложение ( двоичное умножение, требующие двоичных сдвигов и сложений или эквивалентных цифр или групп цифр).
  • Для стандартного BCD требуется четыре бита на цифру, что примерно на 20 процентов больше, чем при двоичном кодировании (отношение 4 бита к логическому210 бит - 1,204). Когда три цифры закодированы в десять битов, накладные расходы на хранение значительно сокращаются за счет кодирования, которое не выровнено с 8-битными границами байтов, обычными для существующего оборудования, что приводит к более медленной реализации в этих системах.
  • Практически существующие реализации BCD обычно медленнее, чем операции с двоичными представлениями, особенно во встроенных системах, из-за ограниченной поддержки процессором собственных операций BCD.[49]

Репрезентативные вариации

Существуют различные реализации BCD, в которых используются другие представления чисел. Программируемые калькуляторы изготовлены по Инструменты Техаса, Hewlett Packard, а другие обычно используют плавающая точка Формат BCD, обычно с двумя или тремя цифрами для (десятичной) экспоненты. Дополнительные биты знаковой цифры могут использоваться для обозначения специальных числовых значений, таких как бесконечность, переполнение /переполнение, и ошибка (мигающий дисплей).

Подписанные варианты

Знаковые десятичные значения могут быть представлены несколькими способами. Например, язык программирования COBOL поддерживает в общей сложности пять зонных десятичных форматов, каждый из которых кодирует числовой знак по-своему:

ТипОписаниеПример
НеподписанныйНет знака клевF1 F2 F3
Подписанный трейлинг (канонический формат)Подпись полубайта в последнем (наименее значимом) байтеF1 F2 C3
Подпись ведущая (перебор)Подписать полубайт в первом (наиболее значимом) байтеC1 F2 F3
Подписанный конечный отдельныйОтдельный байт знакового символа ('+' или же '−') после цифровых байтовF1 F2 F3 2B
Подпись ведущая отдельнаяОтдельный байт знакового символа ('+' или же '−') предшествующие байтам цифры2B F1 F2 F3

Телефония с десятичным двоичным кодом (TBCD)

3GPP развитый TBCD,[50] расширение до BCD, где оставшиеся (неиспользуемые) битовые комбинации используются для добавления определенных телефония символы,[51][52] с цифрами, аналогичными тем, что в телефонные клавиатуры оригинальный дизайн.

Десятичный
Цифра
TBCD
8 4 2 1
*1 0 1 0
#1 0 1 1
а1 1 0 0
б1 1 0 1
c1 1 1 0
Используется как заполнитель при нечетном количестве цифр1 1 1 1

Упомянутый документ 3GPP определяет TBCD-STRING с переставленными полубайтами в каждом байте. Биты, октеты и цифры, проиндексированные начиная с 1, биты справа, цифры и октеты слева.

бит 8765 октета п кодирующая цифра 2п

биты 4321 октета п кодировка цифра 2 (п – 1) + 1

Значение числа 1234, станет 21 43 в TBCD.

Альтернативные кодировки

Если ошибки в представлении и вычислении более важны, чем скорость преобразования в отображение и обратно, может использоваться масштабированное двоичное представление, в котором десятичное число хранится в виде целого числа в двоичной кодировке и десятичной экспоненты со знаком в двоичной кодировке. Например, 0,2 можно представить как 2×101.

Это представление допускает быстрое умножение и деление, но может потребовать сдвига в степени 10 во время сложения и вычитания для выравнивания десятичных знаков. Он подходит для приложений с фиксированным числом десятичных знаков, которые не требуют такой настройки, особенно для финансовых приложений, где обычно достаточно 2 или 4 цифр после десятичной точки. Действительно, это почти форма арифметика с фиксированной точкой так как позиция точка счисления подразумевается.

В Герц и Кодировки Чен – Хо обеспечивать логические преобразования для преобразования групп из трех цифр в кодировке BCD в 10-битные значения и обратно[nb 1] которые могут быть эффективно закодированы аппаратно с задержкой всего 2 или 3 гейта. Плотно упакованная десятичная дробь (DPD) - аналогичная схема[nb 1] который используется для большинства значимое, кроме ведущей цифры, для одного из двух альтернативных десятичных кодировок, указанных в IEEE 754-2008 стандарт с плавающей запятой.

Заявление

В BIOS во многих персональные компьютеры сохраняет дату и время в BCD, потому что MC6818 Чип часов реального времени, используемый в оригинале IBM PC AT материнская плата предоставила время в BCD. Эта форма легко конвертируется в ASCII для отображения.[53][54]

В Семейство 8-битных Atari компьютеров использовали BCD для реализации алгоритмов с плавающей запятой. В MOS 6502 процессор имеет режим BCD, который влияет на инструкции сложения и вычитания. В Psion Organizer 1 программное обеспечение карманного компьютера, поставляемое производителем, также полностью использует BCD для реализации операций с плавающей запятой; более поздние модели Psion использовали исключительно двоичные файлы.

Ранние модели PlayStation 3 сохранить дату и время в BCD. Это привело к отключению консоли по всему миру 1 марта 2010 г. Последние две цифры года сохраняются как BCD были неправильно истолкованы как 16 вызывает ошибку в дате устройства, в результате чего большинство функций становятся неработоспособными. Это было названо Год 2010 Проблема.

Юридическая история

В случае 1972 года Готшалк против Бенсона Верховный суд США отменил решение суда низшей инстанции, разрешившее патент на преобразование чисел в двоичной кодировке в двоичные на компьютере. Это было знаковое решение, определившее патентоспособность программного обеспечения и алгоритмов.

Смотрите также

Примечания

  1. ^ а б c В стандартном упакованном 4-битном представлении имеется 16 состояний (по четыре бита для каждой цифры) с 10 тетрады и 6 псевдотетрады, тогда как в более плотно упакованных схемах, таких как Герц, Чен – Хо или же DPD кодировок меньше - например, всего 24 неиспользуемые состояния в 1024 состояниях (10 бит для трех цифр).
  2. ^ а б c d е Состояния кода (показаны черным цветом) за пределами десятичного диапазона 0–9 указывают на дополнительные состояния варианта кода, отличного от BCD. В обсуждаемом здесь варианте кода BCD они являются псевдотетрадами.
  3. ^ В Код Айкен является одним из нескольких кодов 2 4 2 1. Он также известен как код 2 * 4 2 1.
  4. ^ Код Jump-at-8 также известен как несимметричный код 2 4 2 1.
  5. ^ В Код Петерика также известен как Royal Aircraft Establishment (RAE) код.
  6. ^ В Код О'Брайена, тип I также известен как Вт код или отраженный десятичный код Ватт (WRD).
  7. ^ В Превышение-3 кода Грея также известен как серыйСтибиц код.
  8. ^ а б Подобным образом несколько персонажей часто помещались в машину. слова на миникомпьютеры, видеть IBM SQUOZE и ДЕКАБРЬ RADIX 50.

Рекомендации

  1. ^ Intel. "Руководство по архитектуре ia32" (PDF). Intel. Получено 2015-07-01.
  2. ^ а б Клар, Райнер (1970-02-01). «1.5.3 Konvertierung binär verschlüsselter Dezimalzahlen» [1.5.3 Преобразование двоичных десятичных чисел]. Digitale Rechenautomaten - Eine Einführung [Цифровые компьютеры - Введение]. Sammlung Göschen (на немецком языке). 1241 / 1241a (1-е изд.). Берлин, Германия: Walter de Gruyter & Co. / G. J. Göschen'sche Verlagsbuchhandlung [де ]. С. 17, 21. ISBN  3-11-083160-0. . Archiv-Nr. 7990709. В архиве из оригинала 18.04.2020. Получено 2020-04-13. (205 страниц) (NB. Переиздание первого издания 2019 г. доступно по ссылке ISBN  3-11002793-3, 978-3-11002793-8. Переработанный и расширенный 4-е издание тоже существует.)
  3. ^ а б c Клар, Райнер (1989) [1988-10-01]. «1.4 Коды: Binär verschlüsselte Dezimalzahlen» [1.4 Коды: Десятичные числа, закодированные двоичным кодом]. Digitale Rechenautomaten - Eine Einführung in die Struktur von Computerhardware [Цифровые компьютеры - Введение в структуру компьютерного оборудования]. Sammlung Göschen (на немецком языке). 2050 (4-е переработанное изд.). Берлин, Германия: Walter de Gruyter & Co. С. 25, 28, 38–39. ISBN  3-11011700-2. п. 25: […] Die nicht erlaubten 0/1-Muster nennt man auch Pseudodezimalen. […] (320 страниц)
  4. ^ Шнайдер, Ханс-Йохен (1986). Lexikon der Informatik und Datenverarbeitung (на немецком языке) (2-е изд.). R. Oldenbourg Verlag München Wien. ISBN  3-486-22662-2.
  5. ^ Тафель, Ханс Йорг (1971). Einführung in die digitale Datenverarbeitung [Введение в цифровую обработку информации] (на немецком). Мюнхен: Карл Хансер Верлаг. ISBN  3-446-10569-7.
  6. ^ Штайнбух, Карл В.; Вебер, Вольфганг; Heinemann, Traute, eds. (1974) [1967]. Taschenbuch der Informatik - Band II - Struktur und Programmierung von EDV-Systemen. Taschenbuch der Nachrichtenverarbeitung (на немецком). 2 (3-е изд.). Берлин, Германия: Springer-Verlag. ISBN  3-540-06241-6. LCCN  73-80607.
  7. ^ Титце, Ульрих; Шенк, Кристоф (2012-12-06). Продвинутые электронные схемы. Springer Science & Business Media. ISBN  978-3642812415. 9783642812415. Получено 2015-08-05.
  8. ^ Ковальский, Эмиль (2013-03-08) [1970]. Ядерная Электроника. Springer-Verlag. Дои:10.1007/978-3-642-87663-9. ISBN  978-3642876639. 9783642876639, 978-3-642-87664-6. Получено 2015-08-05.
  9. ^ Ферретти, Витторио (13 марта 2013). Wörterbuch der Elektronik, Datentechnik und Telekommunikation / Словарь по электронике, вычислениям и телекоммуникациям: Teil 1: Deutsch-English / Part 1: German-English. 1 (2-е изд.). Springer-Verlag. ISBN  978-3642980886. 9783642980886. Получено 2015-08-05.
  10. ^ Шпайзер, Амвросий Пауль (1965) [1961]. Digitale Rechenanlagen - Grundlagen / Schaltungstechnik / Arbeitsweise / Betriebssicherheit [Цифровые компьютеры - Основы / Схемы / Работа / Надежность] (на немецком языке) (2-е изд.). ETH Zürich, Цюрих, Швейцария: Springer-Verlag / IBM. п. 209. LCCN  65-14624. 0978.
  11. ^ Cowlishaw, Майк Ф. (2015) [1981, 2008]. «Общая десятичная арифметика». Получено 2016-01-02.
  12. ^ Эванс, Дэвид Сильвестр (март 1961 г.). «Глава четвертая: Вспомогательное оборудование: реле выходного привода и проверки четности для дигитайзеров». Цифровые данные: их получение и обработка для анализа и управления процессами (1-е изд.). Лондон, Великобритания: Hilger & Watts Ltd / Издатели Interscience. стр. 46–64 [56–57]. Получено 2020-05-24. (8 + 82 страниц) (NB. 4-битный 8421 BCD код с доп. бит четности применяется как младший бит достигать нечетная четность результирующего 5-битного кода также известен как Код Ферранти.)
  13. ^ Лала, Параг К. (2007). Принципы современного цифрового дизайна. Джон Уайли и сыновья. С. 20–25. ISBN  978-0-470-07296-7.
  14. ^ а б c d е ж грамм час я j k л м п Бергер, Эрих Р. (1962). «1.3.3. Die Codierung von Zahlen». Написано в Карлсруэ, Германия. В Штайнбух, Карл В. (ред.). Taschenbuch der Nachrichtenverarbeitung (на немецком языке) (1-е изд.). Берлин / Геттинген / Нью-Йорк: Springer-Verlag OHG. С. 68–75. LCCN  62-14511. (NB. Показанный код Каутца (II ), содержащий все восемь доступных двоичных состояний с нечетным счетом единиц, представляет собой небольшую модификацию оригинальный Каутц код (я ), содержащий все восемь состояний с четным счетом единиц, так что инверсия наиболее значимых битов создаст Дополнение 9s.)
  15. ^ а б c d е ж Каммерер, Вильгельм (Май 1969 г.). Написано в Йене, Германия. Фрюхауф, Ганс; Каммерер, Вильгельм; Шредер, Курц; Винклер, Гельмут (ред.). Digitale Automaten - Theorie, Struktur, Technik, Programmieren. Elektronisches Rechnen und Regeln (на немецком языке). 5 (1-е изд.). Берлин, Германия: Akademie-Verlag GmbH. п. 161. Лицензия № 202-100 / 416/69. № заказа. 4666 ES 20 К 3. (NB. Существует также второе издание 1973 г.)
  16. ^ а б c d е ж грамм час я j k л м п о п q Доктер, Фолкерт; Штайнхауэр, Юрген (18.06.1973). Цифровая электроника. Техническая библиотека Philips (PTL) / Macmillan Education (Переиздание 1-го англ. Ред.). Эйндховен, Нидерланды: Macmillan Press Ltd. / Gloeilampenfabrieken Н. В. Филипса. Дои:10.1007/978-1-349-01417-0. ISBN  978-1-349-01419-4. SBN  333-13360-9. Получено 2020-05-11. (270 страниц) (NB. Это основано на переводе тома I двухтомного немецкого издания.)
  17. ^ а б c d е ж грамм час я j k л м п о п q Доктер, Фолкерт; Штайнхауэр, Юрген (1975) [1969]. Digitale Elektronik in der Meßtechnik und Datenverarbeitung: Theoretische Grundlagen und Schaltungstechnik. Philips Fachbücher (на немецком языке). я (исправленное и дополненное 5-е изд.). Гамбург, Германия: Deutsche Philips GmbH. п. 50. ISBN  3-87145-272-6. (xii + 327 + 3 страницы) (NB. Немецкое издание тома I было опубликовано в 1969, 1971, два выпуска в 1972 и 1975 годах. Том II был опубликован в 1970, 1972, 1973 и 1975 годах).
  18. ^ а б c d е ж Каутц, Уильям Х. (Июнь 1954 г.). «IV. Примеры A. Двоичные коды для десятичных знаков, n = 4». Оптимизированное кодирование данных для цифровых компьютеров. Протокол Конвенции I.R.E., Национальная конвенция 1954 г., часть 4 - Электронные компьютеры и теория информации. Сессия 19: Теория информации III - Скорость и вычисления. Стэнфордский исследовательский институт, Стэнфорд, Калифорния, США: I.R.E. С. 47–57 [49, 51–52, 57]. В архиве из оригинала 2020-07-03. Получено 2020-07-03. п. 52: […] Последний столбец [Таблицы II], помеченный как «Лучшее», дает максимально возможную дробь с любым кодом, а именно 0,60, что вдвое лучше, чем любой традиционный код. Эта экстремаль достигается с помощью десяти [сильно отмеченных вершин графа Рис. 4 для n = 4 или, фактически, с любым набором из десяти кодовых комбинаций, которые включают все восемь с четным (или все восемь с нечетным) числом «единиц». Во второй и третьей строках таблицы II перечислены среднее и пиковое десятичное изменение на одну необнаруженную одиночную двоичную ошибку, и они были получены с использованием уравнений разд. II для Δ1 и δ1. Индекс путаницы для десятичных знаков, использующий критерий «десятичной замены», принимается равным cij = | i - j | i, j = 0, 1,… 9. Опять же, «наилучшее» возможное расположение (то же самое для среднего и пикового), одно из которых показано на рис. 4, существенно лучше традиционных кодов. […] Рис. 4 Код минимальной путаницы для десятичных знаков. […] Δ1= 2 Δ1=15 […] [1][2][3][4][5][6][7][8][9][10][11] (11 страниц) (NB. Помимо комбинаторного набора 4-битных двоично-десятичных кодов «минимальной путаницы для десятичных дробей», из которых автор подробно иллюстрирует только один (здесь воспроизводится как код I ) в виде 4-битного графа, автор также показывает 4-битный «двоичный код для аналоговых данных» с 16 состояниями в форме кодовой таблицы, которая, однако, здесь не обсуждается. В код II здесь показана модификация кода, которую я обсуждал Бергер.)
  19. ^ а б c Чинал, Жан П. (январь 1973 г.). «3.3. Коды единичных расстояний». Написано в Париже, Франция. Методы проектирования цифровых систем. Перевод Престона, Алан; Саммер, Артур (1-е английское изд.). Берлин, Германия: Академия-Верлаг / Springer-Verlag. п. 46. Дои:10.1007/978-3-642-86187-1_3. ISBN  978-0-387-05871-9. Лицензия № 202-100 / 542/73. Номер заказа 7617470 (6047) ES 19 B 1/20 K 3. Получено 2020-06-21. (xviii + 506 страниц) (NB. Французская оригинальная книга 1967 года была названа "Techniques Booléennes et Calculateurs Arithmétiques", издана Éditions Dunod [fr ].)
  20. ^ а б Военный справочник: энкодеры - угол вала до цифрового (PDF). Министерство обороны США. 1991-09-30. MIL-HDBK-231A. В архиве (PDF) из оригинала на 2020-07-25. Получено 2020-07-25. (Примечание. Заменяет MIL-HDBK-231 (AS) (1970-07-01).)
  21. ^ а б Стоппер, Герберт (март 1960). Написано в Литзельштеттене, Германия. Рунге, Вильгельм Толме (ред.). "Ermittlung des Codes und der logischen Schaltung einer Zähldekade". Telefunken-Zeitung (TZ) - Technisch-Wissenschaftliche Mitteilungen der Telefunken GMBH (на немецком). Берлин, Германия: Telefunken. 33 (127): 13–19. (7 страниц)
  22. ^ а б Боруки, Лоренц; Диттманн, Иоахим (1971) [июль 1970, 1966, осень 1965]. «2.3 Gebräuchliche Codes in der digitalen Meßtechnik». Написано в Крефельде / Карлсруэ, Германия. Digitale Meßtechnik: Eine Einführung (на немецком языке) (2-е изд.). Берлин / Гейдельберг, Германия: Springer-Verlag. С. 10–23 [12–14]. Дои:10.1007/978-3-642-80560-8. ISBN  3-540-05058-2. LCCN  75-131547. ISBN  978-3-642-80561-5. (viii + 252 стр.) 1-е издание
  23. ^ Уайт, Гарланд С. (октябрь 1953 г.). «Системы кодированных десятичных чисел для цифровых компьютеров». Труды Института Радиоинженеров.. Институт Радиоинженеров (IRE). 41 (10): 1450–1452. Дои:10.1109 / JRPROC.1953.274330. eISSN  2162-6634. ISSN  0096-8390. S2CID  51674710. (3 страницы)
  24. ^ «Различные типы двоичных кодов». Электронный концентратор. 2019-05-01 [2015-01-28]. Раздел 2.4 Кодекс 5211. В архиве из оригинала на 2017-11-14. Получено 2020-08-04.
  25. ^ Пол, Маттиас Р. (1995-08-10) [1994]. "Unterbrechungsfreier Schleifencode" [Код непрерывного цикла]. 1.02 (на немецком языке). Получено 2008-02-11. (NB. Автор назвал этот код Schleifencode (Английский: «код цикла»). Он отличается от BCD-кода Грея только кодировкой состояния 0, чтобы сделать его циклическим. код единичного расстояния для кругового вращения. Избегание шаблона кода с нулями позволяет выполнять самотестирование контура и использовать линии данных для бесперебойного распределения энергии.)
  26. ^ Грей, Фрэнк (1953-03-17) [1947-11-13]. Связь с импульсным кодом (PDF). Нью-Йорк, США: Bell Telephone Laboratories, Incorporated. Патент США 2632058 . Серийный номер 785697. В архиве (PDF) из оригинала 2020-08-05. Получено 2020-08-05. (13 стр.)
  27. ^ Гликсон, Гарри Роберт (март 1957). «Можете ли вы воспользоваться преимуществами циклического двоично-десятичного кода?». Инженерия управления (CtE). Техническое Издательство. 4 (3): 87–91. ISSN  0010-8049. (5 страниц)
  28. ^ а б c d Савард, Джон Дж. Г. (2018) [2006]. «Десятичные представления». квадиблок. В архиве из оригинала на 2018-07-16. Получено 2018-07-16.
  29. ^ Петерик, Эдвард Джон (октябрь 1953 г.). Циклическая прогрессивная двоично-десятичная система представления чисел (Техническая нота MS15). Фарнборо, Великобритания: Royal Aircraft Establishment (РАЭ). (4 страницы) (NB. Иногда упоминается как Циклическая двоично-десятичная система представления чисел.)
  30. ^ Петерик, Эдвард Джон; Хопкинс, А. Дж. (1958). Некоторые недавно разработанные цифровые устройства для кодирования вращения валов (Техническая нота MS21). Фарнборо, Великобритания: Royal Aircraft Establishment (РАЭ).
  31. ^ а б О'Брайен, Джозеф А. (май 1956 г.) [1955-11-15, 1955-06-23]. «Циклические десятичные коды для аналого-цифровых преобразователей». Труды Американского института инженеров-электриков, часть I: Связь и электроника. Bell Telephone Laboratories, Уиппани, Нью-Джерси, США. 75 (2): 120–122. Дои:10.1109 / TCE.1956.6372498. ISSN  0097-2452. S2CID  51657314. Документ 56-21. Получено 2020-05-18. (3 страницы) (Примечание. Этот документ был подготовлен для презентации на Зимнем общем собрании AIEE, Нью-Йорк, США, с 30 января 1956 по 03 февраля 1956).
  32. ^ а б Томпкинс, Ховард Э. (сентябрь 1956 г.) [1956-07-16]. "Двоично-десятичные коды единиц расстояния для двухканальной коммутации". Операции IRE на электронных компьютерах. Переписка. Школа электротехники Мура, Пенсильванский университет, Филадельфия, Пенсильвания, США. ИС-5 (3): 139. Дои:10.1109 / TEC.1956.5219934. ISSN  0367-9950. Получено 2020-05-18. (1 стр.)
  33. ^ Липпель, Бернхард (декабрь 1955 г.). «Десятичный код для аналого-цифрового преобразования». Операции IRE на электронных компьютерах. ИС-4 (4): 158–159. Дои:10.1109 / TEC.1955.5219487. ISSN  0367-9950. (2 страницы)
  34. ^ а б c Сасскинд, Альфред Крисс; Уорд, Джон Эрвин (1958-03-28) [1957, 1956]. «III.F. Коды единичного расстояния / VI.E.2. Отраженные двоичные коды». Написано в Кембридже, Массачусетс, США. В Сасскинде, Альфред Крисс (ред.). Примечания по методам аналого-цифрового преобразования. Технологические книги в науке и технике. 1 (3-е изд.). Нью-Йорк, США: Technology Press Массачусетского технологического института / John Wiley & Sons, Inc. / Chapman & Hall, Ltd. С. 3-7–3-8 [3-7], 3-10–3-16 [3-13–3-16], 6-65–6-60 [6-60]. (x + 416 + 2 страницы) (NB. Содержание книги было первоначально подготовлено сотрудниками Лаборатория сервомеханизмов, Департамент электротехники, Массачусетский технологический институт для Специальных летних программ, проводившихся в 1956 и 1957 годах. Код, который Сасскинд фактически представил в своей работе как «код типа чтения», показан здесь как код типа II, тогда как код типа I является второстепенным производным с двумя наиболее значимыми битовыми столбцами поменяны местами, чтобы лучше проиллюстрировать симметрии.)
  35. ^ а б Юэн, Чун-Квонг (декабрь 1977 г.). «Новое представление для десятичных чисел». Транзакции IEEE на компьютерах. С-26 (12): 1286–1288. Дои:10.1109 / TC.1977.1674792. S2CID  40879271. В архиве из оригинала на 08.08.2020. Получено 2020-08-08.
  36. ^ Лукаль, Гарольд М. (декабрь 1959 г.). «Арифметические операции для цифровых компьютеров с использованием модифицированного отраженного двоичного файла». Операции IRE на электронных компьютерах. ИС-8 (4): 449–458. Дои:10.1109 / TEC.1959.5222057. ISSN  0367-9950. S2CID  206673385. (10 страниц)
  37. ^ Дьюар, Роберт Берридейл Кейт; Смосна, Мэтью (1990). Микропроцессоры - взгляд программиста (1-е изд.). Курантский институт, Нью-Йоркский университет, Нью-Йорк, США: Издательство McGraw-Hill. п. 14. ISBN  0-07-016638-2. LCCN  89-77320. (xviii + 462 стр.)
  38. ^ «Глава 8: Десятичные инструкции». IBM System / 370 Принципы работы. IBM. Март 1980 г.
  39. ^ «Глава 3: Представление данных». Руководство по архитектуре PDP-11. Корпорация цифрового оборудования. 1983.
  40. ^ а б Справочник по архитектуре VAX-11. Корпорация цифрового оборудования. 1985.
  41. ^ «Справочник по ILE RPG».
  42. ^ Таблица кодов символов IBM BM 1401/1440/1460/1410/7010 в порядке BCD[постоянная мертвая ссылка ]
  43. ^ http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.iceg200%2Fenf.htm[постоянная мертвая ссылка ]
  44. ^ «4.7 BCD целые и упакованные BCD целые». Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура (PDF). Версия 072. 1. Корпорация Intel. 2020-05-27 [1997]. С. 3–2, 4-9–4-11 [4-10]. 253665-072US. В архиве (PDF) из оригинала 2020-08-06. Получено 2020-08-06. п. 4-10: […] При работе с целыми числами BCD в регистры общего назначения, значения BCD могут быть распакованы (одна цифра BCD на байт) или упакованы (две цифры BCD на байт). Значение распакованного целого числа BCD - это двоичное значение младшего полбайта (биты с 0 по 3). Старший полубайт (биты с 4 по 7) может быть любым значением во время сложения и вычитания, но должен быть равен нулю во время умножения и деления. Упакованные целые числа BCD позволяют содержать две цифры BCD в одном байте. Здесь цифра в старшем полубайте более значима, чем цифра в младшем полубайте. […] При работе с целыми числами BCD в x87 FPU регистры данных, значения BCD упакованы в 80-битном формате и называются десятичными целыми числами. В этом формате первые 9 байтов содержат 18 цифр в двоично-десятичном формате, по 2 цифры на байт. В младшая цифра содержится в младшем полубайте байта 0 и самая значимая цифра содержится в верхнем полубайте байта 9. Старший бит байта 10 содержит знаковый бит (0 = положительный и 1 = отрицательный; биты с 0 по 6 байта 10 являются все равно биты). Отрицательные десятичные целые числа не хранятся в два дополнения форма; они отличаются от положительных десятичных целых чисел только знаковым битом. Диапазон десятичных целых чисел, которые можно закодировать в этом формате, равен −10.18 + 1 к 1018 - 1. Десятичный целочисленный формат существует только в памяти. Когда десятичное целое число загружается в регистр данных x87 FPU, оно автоматически преобразуется в формат с плавающей запятой двойной расширенной точности. Все десятичные целые числа можно точно представить в формате двойной расширенной точности. […] [12]
  45. ^ url =http://www.tigernt.com/onlineDoc/68000.pdf
  46. ^ Джонс, Дуглас В. (2015-11-25) [1999]. «Арифметика BCD, учебное пособие». Учебники по арифметике. Айова-Сити, штат Айова, США: Университет Айовы, Департамент компьютерных наук. Получено 2016-01-03.
  47. ^ Университет Аликанте. «Архитектура на основе кордика для высокопроизводительных десятичных вычислений» (PDF). IEEE. Получено 2015-08-15.
  48. ^ «Десятичное вращение CORDIC на основе выбора путем округления: алгоритм и архитектура» (PDF). Британское компьютерное общество. Получено 2015-08-14.
  49. ^ Матур, Адитья П. (1989). Введение в микропроцессоры (3-е изд.). Tata McGraw-Hill Publishing Company Limited. ISBN  978-0-07-460222-5.
  50. ^ 3GPP TS 29.002: Спецификация части мобильного приложения (MAP) (Технический отчет). 2013. сек. 17.7.8 Общие типы данных.
  51. ^ «Руководство по протоколам сигнализации и коммутации (SPS) для использования абстрактной синтаксической нотации 1 (ASN.1) в протоколах телекоммуникационных приложений» (PDF). п. 15.
  52. ^ "Спецификация части мобильного приложения XOM (XMAP)" (PDF). п. 93. Архивировано с оригинал (PDF) на 2015-02-21. Получено 2013-06-27.
  53. ^ http://www.se.ecu.edu.au/units/ens1242/lectures/ens_Notes_08.pdf[постоянная мертвая ссылка ]
  54. ^ Лист данных MC6818

дальнейшее чтение

внешняя ссылка