stringtranslate.com

Двоично-десятичное число

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

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

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

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

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

BCD использовался во многих ранних десятичных компьютерах и реализован в наборе инструкций таких машин, как серия IBM System/360 и ее потомки, процессоры VAX корпорации Digital Equipment , Burroughs B1700 и серии Motorola 68000 .

BCD как таковой не так широко используется, как в прошлом, и недоступен или ограничен в новых наборах инструкций (например, ARM ; x86 в длинном режиме ). Однако десятичные форматы с фиксированной точкой и десятичные форматы с плавающей точкой по-прежнему важны и продолжают использоваться в финансовых, коммерческих и промышленных вычислениях, где неуловимые ошибки преобразования и дробного округления , присущие двоичным форматам с плавающей точкой, не могут быть допущены. [11]

Фон

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Например, 4-байтовое значение состоит из 8 полубайтов, где верхние 7 полубайтов хранят цифры 7-значного десятичного значения, а низший полубайт указывает знак десятичного целого значения. Стандартные значения знака — 1100 ( hex C) для положительного (+) и 1101 (D) для отрицательного (−). Это соглашение исходит из поля зоны для символов EBCDIC и знакового представления overpunch .

Другие разрешенные знаки — 1010 (A) и 1110 (E) для положительных и 1011 (B) для отрицательных. Процессоры IBM System/360 будут использовать знаки 1010 (A) и 1011 (B), если бит A установлен в PSW, для стандарта ASCII-8, который никогда не принимался. Большинство реализаций также предоставляют беззнаковые значения BCD со знаковым полубайтом 1111 (F). [39] [40] [41] ILE RPG использует 1111 (F) для положительных и 1101 (D) для отрицательных. [42] Они соответствуют зоне EBCDIC для цифр без знакового перекрытия. В упакованном BCD число 127 представлено как 0001 0010 0111 1100 (127C), а −127 представлено как 0001 0010 0111 1101 (127D). Системы Burroughs использовали 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 , и является собственным форматом для линейки мэйнфреймов Burroughs Medium Systems (происходящих от серии Electrodata 200 1950-х годов).

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

В результате эта система допускает 32-битные упакованные числа BCD в диапазоне от −50 000 000 до +49 999 999, а −1 представляется как 99999999. (Как и в случае с двоичными числами в дополнительном коде, диапазон не является симметричным относительно нуля.)

Упакованная десятичная дробь с фиксированной точкой

Десятичные числа с фиксированной точкой поддерживаются некоторыми языками программирования (например, COBOL и PL/I). Эти языки позволяют программисту указывать неявную десятичную точку перед одной из цифр.

Например, упакованное десятичное значение, закодированное байтами 12 34 56 7C, представляет собой значение с фиксированной точкой +1 234,567, когда подразумеваемая десятичная точка расположена между четвертой и пятой цифрами:

12 34 56 7С 12 34,56 7+

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

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

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

Зональная десятичная дробь

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

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

Ф1 Ф2 Д31 2 −3

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

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

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

Некоторые языки (например, COBOL и PL/I) напрямую поддерживают зонные десятичные значения с фиксированной точкой, назначая неявную десятичную точку в некотором месте между десятичными цифрами числа.

Например, если задано шестибайтовое зонное десятичное значение со знаком и подразумеваемой десятичной точкой справа от четвертой цифры, то шестнадцатеричные байты F1 F2 F7 F9 F5 C0 представляют значение +1279,50:

Ф1 Ф2 Ф7 Ф9 Ф5 С01 2 7 9. 5 +0

Операции с 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 после операций двоичного сложения и вычитания. Intel 8080 , Zilog Z80 и ЦП семейства x86 предоставляют код операции DAA (Decimal Adjust Accumulator).

Вычитание

Вычитание выполняется путем добавления дополнения десятков вычитаемого к уменьшаемому . Для представления знака числа в 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 должно дать отрицательное число. Оставшиеся полубайты являются BCD, поэтому 1001 0010 0101 равно 925. Дополнение до десятков числа 925 равно 1000 − 925 = 75, поэтому вычисленный ответ равен −75.

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

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

ИБМ

IBM использовала термины Binary-Coded Decimal Interchange Code (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 , B и A равны нулю, а цифровое значение представлено стандартным 4-битным BCD в битах от 8 до 1. Для большинства других символов биты B и A просто выводятся из "зонных перфораций" "12", "11" и "0" в коде символа перфокарты , а биты от 8 до 1 - из перфораций от 1 до 9. Перфорация "12-зонная" устанавливает как B , так и A , "11-зонная" устанавливает B , а "0-зонная" (перфорация 0 в сочетании с любыми другими) устанавливает A. Таким образом, буква A , которая в формате перфокарты имеет вид (12,1) , кодируется как (B,A,1) . Символ валюты $ , (11,8,3) на перфокарте, был закодирован в памяти как (B,8,2,1) . Это позволяет схеме преобразования между форматом перфокарты и форматом внутренней памяти быть очень простой с несколькими особыми случаями. Одним важным особым случаем является цифра 0 , представленная одиночным нулевым пробитием на карте и (8,2) в основной памяти. [43]

Память 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, что позволило добавлять гораздо больше символов (например, строчные буквы). Также реализован упакованный тип числовых данных BCD переменной длины, предоставляющий машинные инструкции, которые выполняют арифметические операции непосредственно над упакованными десятичными данными.

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

Сегодня данные BCD по-прежнему активно используются в базах данных IBM, таких как IBM Db2 , и процессорах, таких как z/Architecture и POWER6 , а также более поздних процессорах Power ISA . В этих продуктах BCD обычно представляет собой зонированный BCD (как в EBCDIC или ASCII), упакованный BCD (две десятичные цифры на байт) или «чистую» кодировку BCD (одна десятичная цифра, сохраненная как BCD в нижних четырех битах каждого байта). Все они используются в аппаратных регистрах и процессорах, а также в программном обеспечении.

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

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

Многие процессоры имеют аппаратную поддержку для целочисленной арифметики в кодировке BCD. Например, 6502 , [44] [45] Motorola серии 68000 , [46] и серии x86 . [47] Архитектура Intel x86 поддерживает уникальный 18-разрядный (десятибайтовый) формат BCD , который может быть загружен и сохранен из регистров с плавающей точкой, откуда могут выполняться вычисления. [48]

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

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

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

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

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

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

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

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

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

Недостатки

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

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

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

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

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

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

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

биты 8765 октета n кодируют цифру 2 n

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

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

Этот формат используется в современной мобильной телефонии для отправки набранных номеров, а также идентификатора оператора (кортеж MCC/MNC), IMEI , IMSI (SUPI) и т. д. [56] [57]

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

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

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

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

Приложение

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

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

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

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

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

В решении отмечалось, что патент «полностью предвосхитил бы математическую формулу и на практике был бы патентом на сам алгоритм ». [60] Это было знаменательное решение, определившее патентоспособность программного обеспечения и алгоритмов .

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

Примечания

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

Ссылки

  1. ^ Intel. "Руководство по архитектуре ia32" (PDF) . Intel . Архивировано (PDF) из оригинала 2022-10-09 . Получено 2015-07-01 .
  2. ^ Аб Клар, Райнер (1 февраля 1970 г.). «1.5.3 Konvertierung binär verschlüsselter Dezimalzahlen» [1.5.3 Преобразование двоично-десятичных чисел]. Digitale Rechenautomaten – Eine Einführung [ Цифровые компьютеры – Введение ]. Sammlung Göschen (на немецком языке). Том. 1241/1241а (1-е изд.). Берлин, Германия: Вальтер де Грюйтер и компания / GJ Göschen'sche Verlagsbuchhandlung  [de] . стр. 17, 21. ISBN. 3-11-083160-0. . Архивный номер 7990709. Архивировано из оригинала 2020-04-18 . Получено 2020-04-13 .(205 страниц) (Примечание. Переиздание первого издания 2019 года доступно под ISBN 3-11002793-3 , 978-3-11002793-8 . Существует также переработанное и расширенное 4-е издание.) 
  3. ^ abc Клар, Райнер (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-е изд.). Р. Ольденбург Верлаг Мюнхен Вена. ISBN 3-486-22662-2.
  5. ^ Тафель, Ханс Йорг (1971). Einführung in die digitale Datenverarbeitung [ Введение в цифровую обработку информации ] (на немецком языке). Мюнхен: Карл Хансер Верлаг . ISBN 3-446-10569-7.
  6. ^ Штайнбух, Карл В .; Вебер, Вольфганг; Хайнеманн, Трауте, ред. (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. ^ Титце, Ульрих; Шенк, Кристоф (6 декабря 2012 г.). Усовершенствованные электронные схемы. Springer Science & Business Media . ISBN 978-3642812415. 9783642812415 . Получено 05.08.2015 .
  8. ^ Ковальски, Эмиль (2013-03-08) [1970]. Ядерная электроника. Springer-Verlag . doi :10.1007/978-3-642-87663-9. ISBN 978-3642876639. 9783642876639, 978-3-642-87664-6 . Получено 05.08.2015 .
  9. ^ Ферретти, Витторио (13 марта 2013 г.). Wörterbuch der Elektronik, Datentechnik und Telekommunikation / Словарь по электронике, вычислительной технике и телекоммуникациям: Часть 1: Немецко-английский / Часть 1: Немецко-английский. Том. 1 (2-е изд.). Спрингер-Верлаг. ISBN 978-3642980886. 9783642980886 . Получено 05.08.2015 .
  10. ^ Спейзер, Амброзиус Пол (1965) [1961]. Digitale Rechenanlagen - Grundlagen / Schaltungstechnik / Arbeitsweise / Betriebssicherheit [ Цифровые компьютеры - Основы / Схемы / Эксплуатация / Надежность ] (на немецком языке) (2-е изд.). ETH Zürich , Цюрих, Швейцария: Springer-Verlag / IBM . п. 209. LCCN  65-14624. 0978.
  11. ^ Коулишоу, Майк Ф. (2015) [1981, 2008]. "Общая десятичная арифметика" . Получено 2016-01-02 .
  12. ^ Эванс, Дэвид Сильвестр (март 1961 г.). «Глава четвертая: Вспомогательное оборудование: реле выходного привода и контроля четности для дигитайзеров». Цифровые данные: их вывод и сокращение для анализа и управления процессами (1-е изд.). Лондон, Великобритания: Hilger & Watts Ltd / Interscience Publishers . стр. 46–64 [56–57] . Получено 24.05.2020 .(8+82 страницы) (Примечание. 4-битный код 8421 BCD с дополнительным битом четности , применяемым в качестве младшего бита для достижения нечетности результирующего 5-битного кода, также известен как код Ферранти .)
  13. ^ Лала, Параг К. (2007). Принципы современного цифрового дизайна. John Wiley & Sons . С. 20–25. ISBN 978-0-470-07296-7.
  14. ^ abcdefghijklmn Бергер, Эрих Р. (1962). «1.3.3. Die Codierung von Zahlen». Написано в Карлсруэ, Германия. В Штайнбухе, Карл В. (ред.). Taschenbuch der Nachrichtenverarbeitung (на немецком языке) (1-е изд.). Берлин / Геттинген / Нью-Йорк: Springer-Verlag OHG . стр. 68–75. LCCN  62-14511.(Примечание. Показанный код Каутца (II), содержащий все восемь доступных двоичных состояний с нечетным количеством единиц, является небольшой модификацией исходного кода Каутца (I), содержащего все восемь состояний с четным количеством единиц, так что инверсия старших битов создаст дополнение до 9. )
  15. ^ abcdef Каммерер, Вильгельм [на немецком языке] (май 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.(Примечание. Существует также второе издание 1973 года.)
  16. ^ abcdefghijklmnopq Доктор, Фолкерт; Штайнхауэр, Юрген (18 июня 1973 г.). Цифровая электроника. Техническая библиотека Philips (PTL) / Macmillan Education (переиздание 1-го изд. на английском языке). Эйндховен, Нидерланды: The Macmillan Press Ltd. / Gloeilampenfabrieken NV Philips . дои : 10.1007/978-1-349-01417-0. ISBN 978-1-349-01419-4. СБН 333-13360-9. Архивировано из оригинала 2020-07-16 . Получено 2020-05-11 .(270 страниц) (Примечание. Основано на переводе тома I двухтомного немецкого издания.)
  17. ^ abcdefghijklmnopq Доктор, Фолкерт; Штайнхауэр, Юрген (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 страницы) (Примечание. Немецкое издание тома I было опубликовано в 1969, 1971 годах, два издания в 1972 и 1975 годах. Том II был опубликован в 1970, 1972, 1973 и 1975 годах.)
  18. ^ abcdef Kautz, William H. (июнь 1954 г.). "IV. Примеры A. Двоичные коды для десятичных чисел, n = 4". Оптимизированное кодирование данных для цифровых компьютеров. Convention Record of the IRE, 1954 National Convention, Part 4 - Electronic Computers and Information Theory. Session 19: Information Theory III - Speed ​​and Computation. Stanford Research Institute, Stanford, California, USA: IRE pp. 47–57 [49, 51–52, 57]. Архивировано из оригинала 2020-07-03 . Получено 2020-07-03 . p. 52: […] Последний столбец [таблицы II], помеченный как «Лучший», дает максимально возможную дробь с любым кодом, а именно 0,60 — вполовину лучше, чем любой обычный код. Эта экстремаль достигается с десятью сильно отмеченными вершинами графа на рис. 4 для n = 4, или, фактически, с любым набором из десяти кодовых комбинаций, которые включают все восемь с четным (или все восемь с нечетным) числом «1». Вторая и третья строки Таблицы 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 страниц) (Примечание. Помимо комбинаторного набора 4-битных BCD «минимально путаных кодов для десятичных чисел», из которых автор иллюстрирует только один явно (здесь воспроизведен как код I) в виде 4-битного графика, автор также показывает 16-позиционный 4-битный «двоичный код для аналоговых данных» в виде кодовой таблицы, которая, однако, здесь не обсуждается. Код II, показанный здесь, является модификацией кода I, обсуждаемого Бергером.)
  19. ^ abc Chinal, Jean P. (январь 1973). "Коды". Написано в Париже, Франция. Методы проектирования цифровых систем. Перевод Престона, Алана; Саммера, Артура (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.06.2020 .(xviii+506 страниц) (Примечание. Оригинальная книга на французском языке 1967 года называлась «Techniques Booléennes et Calculateurs Arithmétiques», опубликованная Éditions Dunod  [fr] .)
  20. ^ ab Military Handbook: Encoders - Shaft Angle To Digital (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 (на немецком языке). 33 (127). Берлин, Германия: Telefunken : 13–19.(7 страниц)
  22. ^ аб Боруки, Лоренц; Диттманн, Иоахим (1971) [июль 1970, 1966, осень 1965]. «2.3 Общие коды в цифровой технике». Написано в Крефельде/Карлсруэ, Германия. 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 г.). «Системы кодированных десятичных чисел для цифровых компьютеров». Труды Института радиоинженеров . 41 (10). Институт радиоинженеров (IRE): 1450–1452. doi :10.1109/JRPROC.1953.274330. eISSN  2162-6634. ISSN  0096-8390. S2CID  51674710.(3 страницы)
  24. ^ "Различные типы двоичных кодов". Electronic Hub . 2019-05-01 [2015-01-28]. Раздел 2.4 5211 Код. Архивировано из оригинала 2020-05-18 . Получено 2020-08-04 .
  25. ^ Пол, Матиас Р. (10 августа 1995 г.) [1994]. «Unterbrechungsfreier Schleifencode» [Код непрерывного цикла]. 1.02 (на немецком языке) . Проверено 11 февраля 2008 г.(Примечание. Автор назвал этот код Schleifencode (по-английски: «циклический код»). Он отличается от кода Грея BCD только кодировкой состояния 0, что делает его циклическим кодом единичного расстояния для приложений с вращающимися контактными кольцами с полным кругом . Избежание шаблона кода «все нули» позволяет проводить самотестирование цикла и использовать линии данных для бесперебойного распределения питания.)
  26. ^ Грей, Фрэнк (1953-03-17) [1947-11-13]. Импульсно-кодовая связь (PDF) . Нью-Йорк, США: Bell Telephone Laboratories, Incorporated . Патент США 2,632,058 . Серийный номер 785697. Архивировано (PDF) из оригинала 2020-08-05 . Получено 2020-08-05 .(13 страниц)
  27. Гликсон, Гарри Роберт (март 1957 г.). «Можно ли воспользоваться преимуществами циклического двоично-десятичного кода?». Control Engineering . 4 (3). Technical Publishing Company , подразделение Dun-Donnelley Publishing Corporation, Dun & Bradstreet Corp .: 87–91. ISSN  0010-8049.(5 страниц)
  28. ^ ab Ledley, Robert Steven ; Rotolo, Louis S.; Wilson, James Bruce (1960). "Часть 4. Логическое проектирование схем цифровых компьютеров; Глава 15. Последовательные арифметические операции; Глава 15-7. Дополнительные темы". Цифровые компьютеры и системы управления (PDF) . Серия McGraw-Hill Electrical and Electronic Engineering (1-е изд.). Нью-Йорк, США: McGraw-Hill Book Company, Inc. (издательство: The Maple Press Company, Йорк, Пенсильвания, США). стр. 517–518. ISBN 0-07036981-X. ISSN  2574-7916. LCCN  59015055. OCLC  1033638267. OL  5776493M. СБН 07036981-X. . ark:/13960/t72v3b312. Архивировано (PDF) из оригинала 2021-02-19 . Получено 2021-02-19 . стр. 517: […] Циклический код выгоден в основном при использовании релейных схем, поскольку тогда липкое реле не будет давать ложного состояния, поскольку оно задерживается при переходе от одного циклического числа к другому. Существует много других циклических кодов, которые обладают этим свойством. […][12] (xxiv+835+1 страницы) (Примечание. Ледли классифицировал описанный циклический код как циклический десятичный двоичный код .)
  29. ^ abcd Savard, John JG (2018) [2006]. "Decimal Representations". quadibloc . Архивировано из оригинала 2018-07-16 . Получено 2018-07-16 .
  30. ^ Петерик, Эдвард Джон (октябрь 1953 г.). Циклическая прогрессивная двоично-десятичная система представления чисел (Техническое примечание MS15). Фарнборо, Великобритания: Королевское авиационное учреждение (RAE).(4 страницы) (Примечание. Иногда ее называют циклически-кодированной двоично-десятичной системой представления чисел .)
  31. ^ Петерик, Эдвард Джон; Хопкинс, А. Дж. (1958). Некоторые недавно разработанные цифровые устройства для кодирования вращения валов (Техническая записка MS21). Фарнборо, Великобритания: Королевское авиационное учреждение (RAE).
  32. ^ ab O'Brien, Joseph A. (май 1956) [1955-11-15, 1955-06-23]. "Циклические десятичные коды для аналого-цифровых преобразователей". Труды Американского института инженеров-электриков, часть I: Связь и электроника . 75 (2). Bell Telephone Laboratories, Whippany, New Jersey, USA: 120–122. doi :10.1109/TCE.1956.6372498. ISSN  0097-2452. S2CID  51657314. Статья 56-21. Архивировано из оригинала 2020-05-18 . Получено 2020-05-18 .(3 страницы) (Примечание. Эта статья была подготовлена ​​для презентации на зимнем общем собрании AIEE в Нью-Йорке, США, с 30 января 1956 г. по 3 февраля 1956 г.)
  33. ^ ab Tompkins, Howard E. (сентябрь 1956 г.) [1956-07-16]. "Unit-Distance Binary-Decimal Codes for Two-Track Commutation". IRE Transactions on Electronic Computers . Переписка. EC-5 (3). Школа электротехники Мура , Пенсильванский университет , Филадельфия, Пенсильвания, США: 139. doi :10.1109/TEC.1956.5219934. ISSN  0367-9950. Архивировано из оригинала 2020-05-18 . Получено 2020-05-18 .(1 страница)
  34. ^ Липпель, Бернхард (декабрь 1955 г.). «Десятичный код для аналого-цифрового преобразования». Труды IRE по электронным компьютерам . EC-4 (4): 158–159. doi :10.1109/TEC.1955.5219487. ISSN  0367-9950.(2 страницы)
  35. ^ abc Сасскинд, Альфред Крисс; Уорд, Джон Эрвин (1958-03-28) [1957, 1956]. "III.F. Коды единичного расстояния / VI.E.2. Отражённые двоичные коды". Написано в Кембридже, Массачусетс, США. В Сасскинд, Альфред Крисс (ред.). Заметки о методах аналого-цифрового преобразования . Технологические книги по науке и технике. Том 1 (3-е изд.). Нью-Йорк, США: Technology Press of the Massachusetts Institute of Technology / 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 страницы) (Примечание. Содержание книги было первоначально подготовлено сотрудниками Лаборатории сервомеханизмов , Кафедры электротехники, Массачусетского технологического института , для специальных летних программ, проводившихся в 1956 и 1957 годах. Код Сасскинда, фактически представленный в его работе как «код типа чтения», показан здесь как код типа II, тогда как код типа I является второстепенным производным, в котором два наиболее значимых столбца битов поменяны местами для лучшей иллюстрации симметрии.)
  36. ^ ab Yuen, Chun-Kwong (декабрь 1977 г.). «Новое представление десятичных чисел». IEEE Transactions on Computers . C-26 (12): 1286–1288. doi :10.1109/TC.1977.1674792. S2CID  40879271. Архивировано из оригинала 2020-08-08 . Получено 2020-08-08 .
  37. ^ Лукал, Гарольд М. (декабрь 1959 г.). «Арифметические операции для цифровых компьютеров с использованием модифицированного отраженного двоичного кода». Труды IRE по электронным компьютерам . EC-8 (4): 449–458. doi :10.1109/TEC.1959.5222057. ISSN  0367-9950. S2CID  206673385.(10 страниц)
  38. ^ Dewar, Robert Berriedale Keith ; Smosna, Matthew (1990). Микропроцессоры - взгляд программиста (1-е изд.). Институт Куранта , Нью-Йоркский университет , Нью-Йорк, США: McGraw-Hill Publishing Company . стр. 14. ISBN 0-07-016638-2. LCCN  89-77320.(xviii+462 страницы)
  39. ^ "Глава 8: Десятичные инструкции". Принципы работы IBM System/370 . IBM . Март 1980.
  40. ^ "Глава 3: Представление данных". Справочник по архитектуре PDP-11 . Корпорация Digital Equipment . 1983.
  41. ^ ab VAX-11 Architecture Handbook . Digital Equipment Corporation . 1985.
  42. ^ "Справочник по ILE RPG".
  43. ^ "Таблица кодов символов IBM 1401/1440/1460/1410/7010 в двоично-десятичном коде" (PDF) .
  44. ^ "Набор инструкций 6502". Архивировано из оригинала 2018-05-08.
  45. ^ "NMOS 6502 Opcodes". Архивировано из оригинала 2016-01-14.
  46. ^ "Набор инструкций 68000" (PDF) . Архивировано (PDF) из оригинала 2023-11-20 . Получено 21-11-2023 .(58 страниц)
  47. ^ Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура (PDF) . Intel. Март 2013 г. Раздел 4.7. Архивировано (PDF) из оригинала 2013-04-02 . Получено 2013-04-23 .
  48. ^ "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 цифр BCD, по 2 цифры на байт. Наименее значимая цифра содержится в младшем полубайте байта 0, а наиболее значимая цифра содержится в старшем полубайте байта 9. Наиболее значимый бит байта 10 содержит бит знака (0 = положительный и 1 = отрицательный; биты с 0 по 6 байта 10 являются битами безразличия ). Отрицательные десятичные целые числа не хранятся в форме дополнения до двух ; они отличаются от положительных десятичных целых чисел только битом знака. Диапазон десятичных целых чисел, которые могут быть закодированы в этом формате, составляет от −10 18 + 1 до 10 18 − 1. Формат десятичных целых чисел существует только в памяти. Когда десятичное целое число загружается в регистр данных x87 FPU, оно автоматически преобразуется в формат с плавающей точкой двойной расширенной точности . Все десятичные целые числа точно представляются в формате двойной расширенной точности. […] [13]
  49. ^ Джонс, Дуглас В. (2015-11-25) [1999]. "BCD Arithmetic, a tutorial". Arithmetic Tutorials . Айова-Сити, Айова, США: Университет Айовы , Кафедра компьютерных наук . Получено 2016-01-03 .
  50. ^ Университет Аликанте. "Архитектура на основе Cordic для высокопроизводительных десятичных вычислений" (PDF) . IEEE . Архивировано (PDF) из оригинала 2010-01-05 . Получено 2015-08-15 .
  51. ^ "Decimal CORDIC Rotation based on Selection by Rounding: Algorithm and Architecture" (PDF) . British Computer Society . Архивировано (PDF) из оригинала 2022-10-09 . Получено 2015-08-14 .
  52. ^ Матур, Адитья П. (1989). Введение в микропроцессоры (3-е изд.). Tata McGraw-Hill Publishing Company Limited . ISBN 978-0-07-460222-5.
  53. ^ 3GPP TS 29.002: Спецификация части мобильного приложения (MAP) (Технический отчет). 2013. Раздел 17.7.8 Общие типы данных.
  54. ^ «Протоколы сигнализации и коммутации (SPS). Руководство по использованию абстрактной синтаксической нотации версии 1 (ASN.1) в протоколах телекоммуникационных приложений» (PDF) . стр. 15. Архивировано (PDF) из оригинала 04.12.2013.
  55. ^ "Спецификация части мобильного приложения XOM (XMAP)" (PDF) . стр. 93. Архивировано из оригинала (PDF) 21.02.2015 . Получено 27.06.2013 .
  56. ^ "Протокол Non-Access-Stratum (NAS) для системы 5G (5GS); Этап 3. (3GPP TS 24.501 версия 16.10.0 выпуск 16) TS 24.501 выпуск 16.10.0" (PDF) . ETSI и 3GPP . Архивировано (PDF) из оригинала 2022-02-17 . Получено 2022-02-26 .(ТС 24.501)
  57. ^ "Цифровая сотовая телекоммуникационная система (Фаза 2+) (GSM); Универсальная мобильная телекоммуникационная система (UMTS); LTE; 5G; Нумерация, адресация и идентификация (3GPP TS 23.003 версия 16.8.0 выпуск 16)" (PDF) . ETSI и 3GPP . Архивировано (PDF) из оригинала 2022-02-26 . Получено 2022-02-26 .(ТС 23.003)
  58. ^ "Схемы счетчиков таймеров в IBM PC" (PDF) . www.se.ecu.edu.au . Архивировано из оригинала (PDF) 2008-10-10 . Получено 2022-05-22 .(7 страниц)
  59. ^ Техническое описание MC6818
  60. Готтшалк против Бенсона , 409 U.S. 63, 72 (1972).

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

Внешние ссылки