Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

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

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

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

BCD был использован во многих ранних десятичных компьютерах , и реализуется в наборе команд машин , такие как IBM System / 360 серии и его потомки, Digital Equipment Corporation «s VAX , в Burroughs B1700 , и Motorola 68000 -рядов процессоры. Сам по себе BCD не так широко используется, как в прошлом, и больше не реализован в наборах команд новых компьютеров (например, ARM ); x86 больше не поддерживает свои инструкции BCD в длинном режиме . Однако десятичные числа с фиксированной и плавающей запятойформаты по-прежнему важны и продолжают использоваться в финансовых, коммерческих и промышленных вычислениях, где недопустимы тонкие ошибки преобразования и дробного округления , присущие двоичным представлениям с плавающей запятой. [11]

Фон [ править ]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Упакованный BCD [ править ]

В упакованном BCD (или просто упакованном десятичном [37] ) каждый из двух полубайтов каждого байта представляет собой десятичную цифру. [nb 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)).

Независимо от того, сколько байтов имеет слово , всегда есть четное количество полубайтов, потому что каждый байт имеет их два. Следовательно, слово из n байтов может содержать до (2 n ) -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 поддерживается в языке программирования COBOL как тип данных «COMPUTATIONAL-3» (расширение IBM, принятое многими другими поставщиками компиляторов) или «PACKED-DECIMAL» (часть стандарта COBOL 1985 года). Он поддерживается в PL / I как «FIXED DECIMAL». Помимо IBM System / 360 и более поздних совместимых мэйнфреймов, упакованный BCD реализован в собственном наборе инструкций исходных процессоров VAX от Digital Equipment Corporation и некоторых моделей мэйнфреймов серии SDS Sigma , и является собственным форматом для Medium Systems Burroughs Corporation. линейка мэйнфреймов (произошла от серии Electrodata 200 1950-х годов ).

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

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

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

12 34 56 7C 12 34,56 7+

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

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

Если для десятичной цифры требуется четыре бита, то для трех десятичных цифр требуется 12 бит. Однако, поскольку 2 10 (1024) больше 10 3 (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 [ править ]

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

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

Некоторые языки (такие как 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 - это машины с символьной адресацией, каждая ячейка которых состоит из шести битов, обозначенных B, A, 8, 4, 2 и 1, плюс бит проверки нечетности ( C ) и бит словарной метки ( M ). Для кодирования цифры 1 через 9 , Б и равен нуль , а значение цифр представлено стандартным 4-битовый BCD в битах 8 через 1 . Для большинства других символов биты B и A выводятся просто из «пробивки зоны» «12», «11» и «0» в символьном коде перфокарты , а биты с 8 по 1от 1 до 9 ударов. А «12 зона» пуансон установлен как B и A , в «11» зона множество B , и «0» зоны (а 0 пуансона в сочетании с любыми другими) множество . Таким образом, буква A , которая в формате перфокарты (12,1) , кодируется (B, A, 1) . Символ валюты $ , (11,8,3) в перфокарты, закодированных в памяти как (B, 8,2,1) . Это позволяет схемам выполнять преобразование между форматом перфокарты и форматом внутреннего хранилища очень простым с учетом лишь нескольких особых случаев. Один важный особый случай - цифра 0., представленный одиночным перфоратором 0 на карте и (8,2) в основной памяти. [42]

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

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

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

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

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

Другие компьютеры [ править ]

Серия VAX-11 корпорации Digital Equipment Corporation включает инструкции, которые могут выполнять арифметические операции непосредственно с упакованными данными 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  a ,  uint32_t  b ) {  uint32_t  t1 ,  t2 ;  // беззнаковые 32-битные промежуточные значения t1  =  а  +  0x06666666 ;  t2  =  t1  ^  b ;  // сумма без распространения переноса  t1  =  t1  +  b ;  // предварительная сумма  t2  =  t1  ^  t2 ;  // все двоичные биты переноса  t2  =  ~ t2  &  0x11111110 ;  // биты переносятся только в двоично-десятичном коде  t2  =  ( t2  >>  2 )  |  ( t2  >>  3 );  //  возврат коррекции t1  -  t2 ;  // исправленная сумма BCD }

BCD в электронике [ править ]

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

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

Операции с BCD [ править ]

Дополнение [ править ]

Можно выполнить сложение , сначала добавив в двоичном формате, а затем преобразовав в BCD. Преобразование простой суммы двух цифр может быть выполнено путем добавления 6 (то есть от 16 до 10), когда пятиразрядный результат добавления пары цифр имеет значение больше 9. Причина добавления 6 заключается в том, что есть 16 возможных 4-битных значений BCD (поскольку 2 4 = 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 , или для управления сигналами для семисегментного дисплея ) представляет собой простое сопоставление по цифрам и может выполняться линейно ( O ( n )) время. Преобразование из чистого двоичного кода включает относительно сложную логику, которая охватывает цифры, а для больших чисел не известен алгоритм линейного преобразования времени (см. Двоичная система счисления § Преобразование в другие системы счисления и обратно ).

Недостатки [ править ]

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

Варианты представления [ править ]

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

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

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

Телефония с двоично-десятичным кодированием (TBCD) [ править ]

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

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

бит 8765 октета n кодирование цифра 2 n

биты 4321 октета n кодируют цифру 2 ( n - 1) + 1

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

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

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

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

В Hertz и кодирование Чена-Ho обеспечивает булевы преобразования для преобразования группы из три 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 года Gottschalk v. Benson Верховный суд США отменил решение суда низшей инстанции, разрешившее патент на преобразование чисел, закодированных в двоичном коде, в двоичные на компьютере. Это было знаковое решение, определившее патентоспособность программного обеспечения и алгоритмов.

См. Также [ править ]

  • Десятичное число с двоичным кодом
  • Двоично-кодированный троичный (BCT)
  • Двоичное целое десятичное число (BID)
  • Кодировка Чен – Хо
  • Десятичный компьютер
  • Плотно упакованная десятичная дробь (DPD)
  • Double dabble , алгоритм преобразования двоичных чисел в BCD
  • Проблема 2000 года

Примечания [ править ]

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

Ссылки [ править ]

  1. ^ Intel. «Руководство по архитектуре ia32» (PDF) . Intel . Проверено 1 июля 2015 .
  2. ^ a b Клар, Райнер (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. / GJ Göschen'sche Verlagsbuchhandlung  [ de ] . С. 17, 21. ISBN 3-11-083160-0. . Archiv-Nr. 7990709. Архивировано 18 апреля 2020 года . Проверено 13 апреля 2020 .(205 страниц) (Примечание. Перепечатка первого издания 2019 г. доступна под номерами ISBN 3-11002793-3 , 978-3-11002793-8 . Существует также переработанное и расширенное 4-е издание .) 
  3. ^ a b 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. ^ Steinbuch, Карл В .; Вебер, Вольфганг; 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 . Проверено 5 августа 2015 .
  8. Перейти ↑ Kowalski, Emil (2013-03-08) [1970]. Ядерная электроника . Springer-Verlag . DOI : 10.1007 / 978-3-642-87663-9 . ISBN 978-3642876639. 9783642876639, 978-3-642-87664-6 . Проверено 5 августа 2015 .
  9. ^ Ферретти, Витторио (2013-03-13). Wörterbuch der Elektronik, Datentechnik und Telekommunikation / Словарь по электронике, вычислительной технике и телекоммуникациям: Teil 1: Deutsch-English / Part 1: German-English . 1 (2-е изд.). Springer-Verlag. ISBN 978-3642980886. 9783642980886 . Проверено 5 августа 2015 .
  10. ^ Speiser, Амвросий Пауль (1965) [1961]. Digitale Rechenanlagen - Grundlagen / Schaltungstechnik / Arbeitsweise / Betriebssicherheit [ Цифровые компьютеры - Основы / Схемы / Работа / Надежность ] (на немецком языке) (2-е изд.). ETH Zürich , Цюрих, Швейцария: Springer-Verlag / IBM . п. 209. LCCN 65-14624 . 0978. 
  11. ^ Cowlishaw, Mike F. (2015) [1981, 2008]. «Общая десятичная арифметика» . Проверено 2 января 2016 .
  12. ^ Эванс, Дэвид Сильвестр (март 1961 г.). «Глава четвертая: Вспомогательное оборудование: реле выходного привода и проверки четности для дигитайзеров». Цифровые данные: их получение и сокращение для анализа и управления процессами (1-е изд.). Лондон, Великобритания: Hilger & Watts Ltd / Interscience Publishers . С. 46–64 [56–57] . Проверено 24 мая 2020 .(8 + 82 страницы) (NB. 4-битный BCD-код 8421 с дополнительным битом четности, применяемым как младший бит для достижения нечетной четности результирующего 5-битного кода, также известен как код Ферранти .)
  13. ^ Лала, Parag К. (2007). Принципы современного цифрового дизайна . Джон Вили и сыновья . С. 20–25. ISBN 978-0-470-07296-7.
  14. ^ a b c d e f g h i j k l m n Бергер, Эрих Р. (1962). «1.3.3. Die Codierung von Zahlen». Написано в Карлсруэ, Германия. В Steinbuch, Karl W. (ed.). Taschenbuch der Nachrichtenverarbeitung (на немецком языке) (1-е изд.). Берлин / Геттинген / Нью-Йорк: Springer-Verlag OHG . С. 68–75. LCCN 62-14511 . (NB. Показанный код Каутца ( II ), содержащий все восемь доступных двоичных состояний с нечетным счетом 1 с, представляет собой небольшую модификацию исходного кода Каутца ( I ), содержащий все восемь состояний с четным счетом 1 с, так что инверсия старших битов создаст дополнение до девяток .)
  15. ^ a b c d e f Kämmerer, Вильгельм (май 1969 г.). "II.15. Структура: Informationsdarstellung im Automaten". Написано в Йене, Германия. Во Фрюхафе, Ганс ; Каммерер, Вильгельм; Шредер, Курц; Винклер, Гельмут (ред.). 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. ^ a b c d e f g h i j k l m n o p q Dokter, Folkert; Штайнхауэр, Юрген (18.06.1973). Цифровая электроника . Техническая библиотека Philips (PTL) / Macmillan Education (Переиздание 1-го англ. Ред.). Эйндховен, Нидерланды: Macmillan Press Ltd. / NV Philips Gloeilampenfabrieken . DOI : 10.1007 / 978-1-349-01417-0 . ISBN 978-1-349-01419-4. SBN 333-13360-9. Проверено 11 мая 2020 . (270 страниц) (NB. Это основано на переводе тома I двухтомного немецкого издания.)
  17. ^ a b c d e f g h i j k l m n o p q Dokter, Folkert; Штайнхауэр, Юрген (1975) [1969]. Digitale Elektronik in der Meßtechnik und Datenverarbeitung: Theoretische Grundlagen und Schaltungstechnik . Philips Fachbücher (на немецком языке). I (исправленное и дополненное 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. ^ a b c d e f Каутц, Уильям Х. (июнь 1954 г.). «IV. Примеры A. Двоичные коды для десятичных знаков, n = 4». Оптимизированное кодирование данных для цифровых компьютеров . Протокол Конвенции IRE, Национальное собрание 1954 г., Часть 4 - Электронные компьютеры и теория информации . Сессия 19: Теория информации III - Скорость и вычисления. Стэнфордский исследовательский институт, Стэнфорд, Калифорния, США: IRE, стр. 47–57 [49, 51–52, 57]. Архивировано 3 июля 2020 года . Проверено 3 июля 2020 . п. 52:[…] Последний столбец [Таблицы II], помеченный как «Лучшее», дает максимально возможную дробь с любым кодом, а именно 0,60, что вдвое лучше, чем любой традиционный код. Эта экстремальная ситуация достигается с помощью десяти [сильно отмеченных вершин графа на рис. 4 для n = 4, или, фактически, с любым набором из десяти кодовых комбинаций, которые включают все восемь с четным (или все восемь с нечетным ) количество "единиц". Во второй и третьей строках таблицы II перечислены среднее и пиковое десятичное изменение на одну необнаруженную одиночную двоичную ошибку, и они были получены с использованием уравнений разд. II для Δ 1 и δ 1 . Индекс путаницы для десятичных знаков с использованием критерия «десятичной замены» принимается равным c ij= | 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-битного BCD" коды минимальной путаницы для десятичных дробей », из которых автор явно иллюстрирует только один (здесь воспроизводится как код I ) в форме 4-битного графа, автор также показывает 4-битный« двоичный код для аналоговых данных »с 16 состояниями. в виде кодовой таблицы, которая, однако, здесь не обсуждается. Показанный здесь код II является модификацией кода, который я обсуждал Бергером .)
  19. ^ a b c Чинал, Жан П. (январь 1973 г.). «3.3. Коды единичных расстояний». Написано в Париже, Франция. Методы проектирования цифровых систем . Перевод Престона, Алан; Саммер, Артур (1-е английское изд.). Берлин, Германия: Akademie-Verlag / Springer-Verlag . п. 46. DOI : 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 . Проверено 21 июня 2020 .(xviii + 506 страниц) (NB. Французская оригинальная книга 1967 г. была названа «Techniques Booléennes et Calculateurs Arithmétiques», издана Éditions Dunod  [ fr ] .)
  20. ^ a b Военное руководство: Энкодеры - угол вала в цифровой формат (PDF) . Министерство обороны США . 1991-09-30. MIL-HDBK-231A. Архивировано (PDF) из оригинала 25.07.2020 . Проверено 25 июля 2020 . (Примечание. Заменяет MIL-HDBK-231 (AS) (1970-07-01).)
  21. ^ a b Стоппер, Герберт (март 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. ^ a b Боруки, Лоренц; Диттманн, Иоахим (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]. DOI : 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 г.). «Системы кодированных десятичных чисел для цифровых компьютеров». Труды Института Радиоинженеров . Институт Радиоинженеров (ИРЭ). 41 (10): 1450–1452. DOI : 10.1109 / JRPROC.1953.274330 . eISSN 2162-6634 . ISSN 0096-8390 . S2CID 51674710 .    (3 страницы)
  24. ^ «Различные типы двоичных кодов» . Электронный хаб . 2019-05-01 [2015-01-28]. Раздел 2.4 Кодекс 5211. Архивировано 14 ноября 2017 года . Проверено 4 августа 2020 .
  25. ^ Пол, Маттиас Р. (1995-08-10) [1994]. "Unterbrechungsfreier Schleifencode" [Код непрерывного цикла]. 1.02 (на немецком языке) . Проверено 11 февраля 2008 .(NB. Автор назвал этот код Schleifencode (англ .: «loop code»). Он отличается от BCD-кода Грея только кодировкой состояния 0, чтобы сделать его циклическим кодом единичного расстояния для приложений с полным кругом вращения. -Нулевой кодовый шаблон позволяет выполнять самотестирование контура и использовать линии данных для бесперебойного распределения питания.)
  26. ^ Грей, Фрэнк (1953-03-17) [1947-11-13]. Связь с импульсным кодом (PDF) . Нью-Йорк, США: Bell Telephone Laboratories, Incorporated . Патент США 2632058 . Серийный номер 785697. Архивировано (PDF) из оригинала 05.08.2020 . Проверено 5 августа 2020 . (13 стр.)
  27. ^ Glixon, Гарри Роберт (март 1957). «Можете ли вы воспользоваться преимуществами циклического двоично-десятичного кода?» . Техника управления . Техническая издательская компания , подразделение Dun-Donnelley Publishing Corporation, Dun & Bradstreet Corp. 4 (3): 87–91. ISSN 0010-8049 .   (5 страниц)
  28. ^ a b c d Савард, Джон Дж. Г. (2018) [2006]. «Десятичные представления» . квадиблок . Архивировано 16 июля 2018 года . Проверено 16 июля 2018 .
  29. ^ Petherick, Эдвард Джон (октябрь 1953). Циклическая прогрессивная двоично-десятичная система представления чисел (Техническое примечание MS15). Фарнборо, Великобритания: Royal Aircraft Establishment (RAE).(4 страницы) (NB. Иногда ее называют двоично-десятичной системой представления чисел с циклическим кодированием .)
  30. ^ Петерик, Эдвард Джон; Хопкинс, AJ (1958). Некоторые недавно разработанные цифровые устройства для кодирования вращения валов (Техническая записка MS21). Фарнборо, Великобритания: Royal Aircraft Establishment (RAE).
  31. ^ а б О'Брайен, Джозеф А. (май 1956 г.) [1955-11-15, 1955-06-23]. «Циклические десятичные коды для аналого-цифровых преобразователей» . Труды Американского института инженеров-электриков, Часть I: Связь и электроника . Bell Telephone Laboratories, Уиппани, Нью-Джерси, США. 75 (2): 120–122. DOI : 10.1109 / TCE.1956.6372498 . ISSN 0097-2452 . S2CID 51657314 . Документ 56-21 . Проверено 18 мая 2020 .   (3 страницы) (Примечание. Этот документ был подготовлен для презентации на Зимнем общем собрании AIEE, Нью-Йорк, США, с 30 января 1956 по 03 февраля 1956).
  32. ^ a b Томпкинс, Ховард Э. (сентябрь 1956 г.) [1956-07-16]. "Двоично-десятичные коды единиц расстояния для двухканальной коммутации" . Операции IRE на электронных компьютерах . Переписка. Школа электротехники Мура , Пенсильванский университет , Филадельфия, Пенсильвания, США. EC-5 (3): 139. DOI : 10,1109 / TEC.1956.5219934 . ISSN 0367-9950 . Проверено 18 мая 2020 .  (1 стр.)
  33. ^ Липпель, Бернхард (декабрь 1955 г.). «Десятичный код для аналого-цифрового преобразования». Операции IRE на электронных компьютерах . ИС-4 (4): 158–159. DOI : 10.1109 / TEC.1955.5219487 . ISSN 0367-9950 .  (2 страницы)
  34. ^ a b 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. ↑ a b Yuen, Chun-Kwong (декабрь 1977 г.). «Новое представление для десятичных чисел» . Транзакции IEEE на компьютерах . С-26 (12): 1286–1288. DOI : 10.1109 / TC.1977.1674792 . S2CID 40879271 . Архивировано 8 августа 2020 года . Проверено 8 августа 2020 . 
  36. ^ Lucal, Гарольд М. (декабрь 1959). «Арифметические операции для цифровых компьютеров с использованием модифицированного отраженного двоичного файла» . Операции IRE на электронных компьютерах . ИС-8 (4): 449–458. DOI : 10.1109 / TEC.1959.5222057 . ISSN 0367-9950 . S2CID 206673385 .   (10 страниц)
  37. ^ Дьюар, Роберт Берридейл Кейт ; Смосна, Мэтью (1990). Микропроцессоры - взгляд программиста (1-е изд.). Институт Куранта , Нью-Йоркский университет , Нью-Йорк, США: McGraw-Hill Publishing Company . п. 14. ISBN 0-07-016638-2. LCCN  89-77320 . (xviii + 462 стр.)
  38. ^ «Глава 8: Десятичные инструкции». IBM System / 370 Принципы работы . IBM . Март 1980 г.
  39. ^ «Глава 3: Представление данных». Руководство по архитектуре PDP-11 . Корпорация цифрового оборудования . 1983 г.
  40. ^ a b Справочник по архитектуре 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) из оригинала 06.08.2020 . Проверено 6 августа 2020 . п. 4-10: […] При работе с целыми числами BCD в регистрах общего назначения значения BCD могут быть распакованы (одна цифра BCD на байт) или упакована (две цифры BCD на байт). Значение распакованного целого числа BCD - это двоичное значение младшего полубайта. (биты с 0 по 3). Старший полубайт (биты с 4 по 7) может быть любым значением во время сложения и вычитания, но должен быть равен нулю во время умножения и деления. Упакованные целые числа BCD позволяют содержать две цифры BCD в одном байте. Здесь цифра в старшем полубайте более значима, чем цифра в младшем полубайте. […] При работе с целыми числами BCD в регистрах данных FPU x87 , значения BCD упаковываются в 80-битном формате и называются десятичными целыми числами. В этом формате первые 9 байтов содержат 18 цифр в двоично-десятичном формате, по 2 цифры на байт. Наименее значимая цифра содержится в нижней половине байта байта 0 и наиболее значимая цифра содержится в верхней половине байта байта 9. самый старший бит байта 10 содержитзнаковый бит (0 = положительный и 1 = отрицательный; биты с 0 по 6 байта 10 не имеют значения ). Отрицательные десятичные целые числа не хранятся в форме дополнения до двух ; они отличаются от положительных десятичных целых чисел только знаковым битом. Диапазон десятичных целых чисел, которые могут быть закодированы в этом формате, составляет от –10 18 + 1 до 10 18 - 1. Формат десятичных целых чисел существует только в памяти. Когда десятичное целое число загружается в регистр данных x87 FPU, оно автоматически преобразуется в формат с плавающей запятой двойной расширенной точности . Все десятичные целые числа можно точно представить в формате двойной расширенной точности. […] [12]
  45. ^ url = http://www.tigernt.com/onlineDoc/68000.pdf
  46. ^ Джонс, Дуглас В. (2015-11-25) [1999]. «BCD Арифметика, учебное пособие» . Учебники по арифметике . Айова-Сити, Айова, США: Университет Айовы , факультет компьютерных наук . Проверено 3 января 2016 .
  47. ^ Университет Аликанте. «Архитектура на основе корды для высокопроизводительных десятичных вычислений» (PDF) . IEEE . Проверено 15 августа 2015 .
  48. ^ «Десятичное вращение CORDIC на основе выбора округлением: алгоритм и архитектура» (PDF) . Британское компьютерное общество . Проверено 14 августа 2015 .
  49. ^ Матур, Адитья P. (1989). Введение в микропроцессоры (3-е изд.). Тата МакГроу-Хилл Паблишинг Компани Лимитед . ISBN 978-0-07-460222-5.
  50. ^ 3GPP TS 29.002: Спецификация части мобильного приложения (MAP) (Технический отчет). 2013. сек. 17.7.8 Общие типы данных.
  51. ^ «Протоколы сигнализации и рекомендации по коммутации (SPS) для использования абстрактной синтаксической нотации один (ASN.1) в протоколах телекоммуникационных приложений» (PDF) . п. 15.
  52. ^ «Спецификация части мобильного приложения XOM (XMAP)» (PDF) . п. 93. Архивировано из оригинального (PDF) 21 февраля 2015 года . Проверено 27 июня 2013 .
  53. ^ http://www.se.ecu.edu.au/units/ens1242/lectures/ens_Notes_08.pdf [ постоянная мертвая ссылка ]
  54. ^ Лист данных MC6818

Дальнейшее чтение [ править ]

  • Маккензи, Чарльз Э. (1980). Наборы кодированных символов, история и развитие . Серия системного программирования (1-е изд.). Эддисон-Уэсли Паблишинг Компани, Инк. Стр. xii. ISBN 0-201-14460-3. LCCN  77-90165 . Проверено 22 мая 2016 . [13]
  • Ричардс, Ричард Колер (1955). Арифметические операции в цифровых компьютерах . Нью-Йорк, США: ван Ностранд . С. 397–.
  • Шмид, Герман (1974). Десятичные вычисления (1-е изд.). Бингемтон, Нью-Йорк, США: John Wiley & Sons . ISBN 0-471-76180-X.и Schmid, Hermann (1983) [1974]. Десятичные вычисления (1 (переиздание) изд.). Малабар, Флорида, США: Издательство Роберта Кригера. ISBN 0-89874-318-4.(NB. По крайней мере, некоторые партии репринтного издания Кригера были опечатками с дефектными страницами 115–146.)
  • Массалин, Генри (октябрь 1987 г.). Кац, Рэнди (ред.). «Супероптимизатор: взгляд на самую маленькую программу» (PDF) . Труды Второй Международной конференции по архитектурной поддержке языков программирования и операционных систем Обзор операционных систем ACM SIGOPS . 21 (4): 122–126. DOI : 10.1145 / 36204.36194 . ISBN 0-8186-0805-6. Архивировано (PDF) из оригинала на 2017-07-04 . Проверено 25 апреля 2012 . Краткое содержание (1995-06-14). (Также: Уведомления ACM SIGPLAN, Vol. 22 # 10, IEEE Computer Society Press # 87CH2440-6, октябрь 1987 г.)
  • Ширази, Бехруз; Юн, Дэвид YY; Чжан, Чанг Н. (март 1988 г.). СБИС для сложения десятичных дробей с двоичным кодом . Седьмая ежегодная международная конференция IEEE по компьютерам и коммуникациям в Фениксе, 1988 г. IEEE . С. 52–56.
  • Коричневый; Вранешич (2003). Основы цифровой логики .
  • Таплиял, Химаншу; Арабния, Хамид Р. (ноябрь 2006 г.). Модифицированный сумматор Carry Look Ahead BCD с реализацией CMOS и обратимой логики . Материалы Международной конференции по компьютерному дизайну 2006 г. (CDES'06). CSREA Press. С. 64–69. ISBN 1-60132-009-4.
  • Kaivani, A .; Альхоссейни, А. Закер; Горгин, С .; Фазлали, М. (декабрь 2006 г.). Обратимая реализация преобразователя плотно упакованных десятичных чисел в двоично-десятичный формат и обратно с использованием в IEEE-754R . 9-я Международная конференция по информационным технологиям (ICIT'06). IEEE . С. 273–276.
  • Коулишоу, Майк Ф. (2009) [2002, 2008]. «Библиография материалов по десятичной арифметике - по категориям» . Общая десятичная арифметика . IBM . Проверено 2 января 2016 .

Внешние ссылки [ править ]

  • Коулишоу, Майк Ф. (2014) [2000]. «Краткое изложение кодирования десятичных данных Чен-Хо» . Общая десятичная арифметика . IBM . Проверено 2 января 2016 .
  • Коулишоу, Майк Ф. (2007) [2000]. «Резюме плотно упакованного десятичного кодирования» . Общая десятичная арифметика . IBM . Проверено 2 января 2016 .
  • Преобразование BCD в десятичное, двоичное и шестнадцатеричное и наоборот
  • BCD для Java