stringtranslate.com

Двоично-десятичный код

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

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

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

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

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

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

Фон

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

Эту схему также можно назвать простой двоично-десятичной кодировкой ( SBCD ) или BCD 8421 , и она является наиболее распространенной кодировкой. [12] Другие включают так называемые кодировки «4221» и «7421», названные в честь взвешивания, используемого для битов, и « Excess-3 ». [13] Например, цифра 6 BCD 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 формате с обратным порядком байтов , программа будет кодировать следующим образом:

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

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

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

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

В упакованном BCD (или просто упакованном десятичном формате [38] ) каждый полубайт представляет десятичную цифру. [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). [39] [40] [41] ILE RPG использует 1111 (F) для положительного и 1101 (D) для отрицательного. [42] Они соответствуют зоне 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 и является собственным форматом для средних систем Burroughs Corporation. линейка мэйнфреймов (происходящая от серии Electrodata 200 1950-х годов).

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

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

Десятичные числа с фиксированной запятой поддерживаются некоторыми языками программирования (например, COBOL и PL/I). Эти языки позволяют программисту указывать неявную десятичную точку перед одной из цифр. Например, упакованное десятичное значение, закодированное байтами 12 34 56 7C, представляет значение с фиксированной точкой +1234,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:

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

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

ИБМ

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 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 , представленная одиночной цифрой 0 на карте и (8,2) в основной памяти. [43]

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

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

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

На IBM 1130 и 1800 упакованный BCD поддерживается программным обеспечением IBM Commercial Subroutine Package.

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

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

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

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

Серия Motorola 68000 имела инструкции BCD. [46]

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

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

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

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

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

Операции с 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 [50] и процессоры семейства x86 [51] предоставляют код операции 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 в двоично-десятичном формате и вычислить десятичное дополнение 0002.

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

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

Недостатки

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

Существуют различные реализации 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.

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

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

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

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

Приложение

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

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

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

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

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

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

Примечания

  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. ^ Интел. «Руководство по архитектуре ia32» (PDF) . Интел . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 1 июля 2015 г.
  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. . Архив-Nr. 7990709. Архивировано из оригинала 18 апреля 2020 г. Проверено 13 апреля 2020 г.(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 . Проверено 5 августа 2015 г.
  8. ^ Ковальски, Эмиль (08 марта 2013 г.) [1970]. Ядерная электроника. Спрингер-Верлаг . дои : 10.1007/978-3-642-87663-9. ISBN 978-3642876639. 9783642876639, 978-3-642-87664-6 . Проверено 5 августа 2015 г.
  9. ^ Ферретти, Витторио (13 марта 2013 г.). Wörterbuch der Elektronik, Datentechnik und Telekommunikation / Словарь по электронике, вычислительной технике и телекоммуникациям: Часть 1: Немецко-английский / Часть 1: Немецко-английский. Том. 1 (2-е изд.). Спрингер-Верлаг. ISBN 978-3642980886. 9783642980886 . Проверено 5 августа 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]. «Общая десятичная арифметика» . Проверено 2 января 2016 г.
  12. ^ Эванс, Дэвид Сильвестр (март 1961 г.). «Глава четвертая: Вспомогательное оборудование: реле управления выходом и проверки четности для цифровых преобразователей». Цифровые данные: их получение и обработка для анализа и управления процессами (1-е изд.). Лондон, Великобритания: Hilger & Watts Ltd / Interscience Publishers . стр. 46–64 [56–57] . Проверено 24 мая 2020 г.(8+82 страницы) (Примечание. 4-битный BCD-код 8421 с дополнительным битом четности , применяемым в качестве младшего бита для достижения нечетной четности результирующего 5-битного кода, также известен как код Ферранти .)
  13. ^ Лала, Параг К. (2007). Принципы современного цифрового дизайна. Джон Уайли и сыновья . стр. 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), содержащий все восемь доступных двоичных состояний с нечетным счетчиком 1, представляет собой небольшую модификацию исходного кода Каутца (I), содержащего все восемь состояний с четным счетчиком 1, так что инверсия старших битов создаст дополнение до девяток .)
  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. Архивировано из оригинала 16 июля 2020 г. Проверено 11 мая 2020 г.(270 страниц) (Примечание. Основано на переводе первого тома двухтомного немецкого издания.)
  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 Каутц, Уильям Х. (июнь 1954 г.). «IV. Примеры А. Двоичные коды десятичных чисел, 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, или, фактически, с любым набором из десяти кодовых комбинаций, включающим все восемь с четным (или все восемь с нечетным числом). ) количество «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 страниц) (NB. Кроме комбинаторного набора 4-битных BCD " коды с минимальной путаницей для десятичных чисел», из которых автор явно иллюстрирует только один (здесь воспроизведенный как код I) в виде 4-битного графика, автор также показывает 4-битный «двоичный код для аналоговых данных» с 16 состояниями. в виде кодовой таблицы, которая, однако, здесь не обсуждается. Показанный здесь код II представляет собой модификацию кода, который я обсуждал Бергером.)
  19. ^ abc Chinal, Жан П. (январь 1973 г.). «Коды». Написано в Париже, Франция. Методы проектирования цифровых систем. Перевод Престона, Алан; Саммер, Артур (1-е изд. на английском языке). Берлин, Германия: Akademie-Verlag / Springer-Verlag . п. 46. ​​дои : 10.1007/978-3-642-86187-1_3. ISBN 978-0-387-05871-9. Лицензия № 202-100/542/73. Артикул №7617470(6047) ES 19 B 1/20 K 3 . Проверено 21 июня 2020 г.(xviii+506 страниц) (Примечание. Оригинальная книга на французском языке 1967 года называлась «Techniques Booléennes et Calculateurs Arithmétiques», опубликованная Éditions Dunod  [fr] .)
  20. ^ ab Военный справочник: Энкодеры — угол вала к цифровому (PDF) . Министерство обороны США . 1991-09-30. МИЛ-ХДБК-231А. Архивировано (PDF) из оригинала 25 июля 2020 г. Проверено 25 июля 2020 г.(Примечание. Заменяет MIL-HDBK-231(AS) (01.07.1970).)
  21. ^ аб Стоппер, Герберт (март 1960 г.). Написано в Литцельштеттене, Германия. Рунге, Вильгельм Толме (ред.). «Ermittlung des Codes und der Logischen Schaltung einer Zähldekade». Telefunken-Zeitung (TZ) - Technisch-Wissenschaftliche Mitteilungen der Telefunken GMBH (на немецком языке). Берлин, Германия: Telefunken . 33 (127): 13–19.(7 страниц)
  22. ^ аб Боруки, Лоренц; Диттманн, Иоахим (1971) [июль 1970, 1966, осень 1965]. «2.3 Общие коды в цифровой технике». Написано в Крефельде/Карлсруэ, Германия. 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): 1450–1452. дои : 10.1109/JRPROC.1953.274330. eISSN  2162-6634. ISSN  0096-8390. S2CID  51674710.(3 страницы)
  24. ^ «Различные типы двоичных кодов». Электронный хаб . 01 мая 2019 г. [28 января 2015 г.]. Раздел 2.4 Кодекса 5211. Архивировано из оригинала 18 мая 2020 г. Проверено 4 августа 2020 г.
  25. ^ Пол, Матиас Р. (10 августа 1995 г.) [1994]. «Unterbrechungsfreier Schleifencode» [Код непрерывного цикла]. 1.02 (на немецком языке) . Проверено 11 февраля 2008 г.(Примечание. Автор назвал этот код Schleifencode (англ. «контурный код»). Он отличается от кода Грея BCD только кодированием состояния 0, что делает его циклическим кодом единичного расстояния для применений с вращающимися контактными кольцами полного круга . Избегание шаблон кода с нулевым значением позволяет осуществлять самотестирование контура и использовать линии передачи данных для бесперебойного распределения энергии.)
  26. ^ Грей, Фрэнк (17 марта 1953) [13 ноября 1947]. Импульсно-кодовая связь (PDF) . Нью-Йорк, США: Bell Telephone Laboratories, Incorporated . Патент США 2632058 . Серийный номер 785697. Архивировано (PDF) из оригинала 5 августа 2020 г. Проверено 5 августа 2020 г.(13 страниц)
  27. ^ Гликсон, Гарри Роберт (март 1957 г.). «Можете ли вы воспользоваться преимуществами циклического двоично-десятичного кода?». Техника управления . Техническая издательская компания , подразделение издательской корпорации Dun-Donnelley, Dun & Bradstreet Corp. 4 (3): 87–91. ISSN  0010-8049. (5 страниц)
  28. ^ аб Ледли, Роберт Стивен ; Ротоло, Луи С.; Уилсон, Джеймс Брюс (1960). «Часть 4. Логическое проектирование схем цифровой вычислительной машины; Глава 15. Последовательные арифметические операции; Глава 15-7. Дополнительные темы». Цифровые компьютеры и техника управления (PDF) . Серия McGraw-Hill по электротехнике и электронике (1-е изд.). Нью-Йорк, США: McGraw-Hill Book Company, Inc. (принтер: The Maple Press Company, Йорк, Пенсильвания, США). стр. 517–518. ISBN 0-07036981-Х. ISSN  2574-7916. LCCN  59015055. OCLC  1033638267. OL  5776493M. СБН 07036981-Х. . ковчег:/13960/t72v3b312. Архивировано (PDF) из оригинала 19 февраля 2021 г. Проверено 19 февраля 2021 г. п. 517: […] Циклический код выгоден главным образом при использовании релейных схем, поскольку тогда липкое реле не будет выдавать ложное состояние, поскольку оно задерживается при переходе от одного циклического числа к другому. Есть много других циклических кодов, обладающих этим свойством. […][12] (xxiv+835+1 стр.) (Примечание: Ледли классифицировал описанный циклический код как циклический двоичный код с десятичной кодировкой .)
  29. ^ abcd Савард, Джон Дж.Г. (2018) [2006]. «Десятичные представления». четырехблок . Архивировано из оригинала 16 июля 2018 г. Проверено 16 июля 2018 г.
  30. ^ Петерик, Эдвард Джон (октябрь 1953 г.). Циклическая прогрессивная двоично-десятичная система представления чисел (Техническое примечание MS15). Фарнборо, Великобритания: Королевское авиастроительное предприятие (RAE).(4 страницы) (Примечание. Иногда ее называют циклической двоично-десятичной системой представления чисел .)
  31. ^ Петерик, Эдвард Джон; Хопкинс, Эй Джей (1958). Некоторые недавно разработанные цифровые устройства для кодирования вращения валов (Техническая нота MS21). Фарнборо, Великобритания: Королевское авиастроительное предприятие (RAE).
  32. ^ Аб О'Брайен, Джозеф А. (май 1956 г.) [15 ноября 1955 г., 23 июня 1955 г.]. «Циклические десятичные коды для аналого-цифровых преобразователей». Труды Американского института инженеров-электриков, Часть I: Связь и электроника . Bell Telephone Laboratories, Уиппани, Нью-Джерси, США. 75 (2): 120–122. дои : 10.1109/TCE.1956.6372498. ISSN  0097-2452. S2CID  51657314. Бумага 56-21 . Проверено 18 мая 2020 г.(3 страницы) (Примечание. Этот документ был подготовлен для презентации на Зимнем общем собрании AIEE, Нью-Йорк, США, с 30 января 1956 г. по 3 февраля 1956 г.)
  33. ^ аб Томпкинс, Ховард Э. (сентябрь 1956 г.) [16 июля 1956]. «Двоично-десятичные коды с единичным расстоянием для двухпутевой коммутации». IRE-транзакции на электронных компьютерах . Переписка. Школа электротехники Мура , Пенсильванский университет , Филадельфия, Пенсильвания, США. EC-5 (3): 139. doi :10.1109/TEC.1956.5219934. ISSN  0367-9950 . Проверено 18 мая 2020 г.(1 страница)
  34. ^ Липпель, Бернхард (декабрь 1955 г.). «Десятичный код для аналого-цифрового преобразования». IRE-транзакции на электронных компьютерах . ИС-4 (4): 158–159. дои : 10.1109/TEC.1955.5219487. ISSN  0367-9950.(2 страницы)
  35. ^ abc Зюскинд, Альфред Крисс; Уорд, Джон Эрвин (28 марта 1958 г.) [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 страницы) (Примечание. Содержание книги было первоначально подготовлено сотрудниками Лаборатории сервомеханизмов факультета электротехники Массачусетского технологического института для специальных летних программ, проводившихся в 1956 и 1957 годах. Код Сасскинда фактически представлен в его работа как «код типа чтения» показана здесь как код типа II, тогда как код типа I является второстепенным производным, в котором два наиболее значимых битовых столбца заменены местами, чтобы лучше иллюстрировать симметрию.)
  36. ^ Аб Юэн, Чун-Квонг (декабрь 1977 г.). «Новое представление десятичных чисел». Транзакции IEEE на компьютерах . С-26 (12): 1286–1288. дои : 10.1109/TC.1977.1674792. S2CID  40879271. Архивировано из оригинала 8 августа 2020 г. Проверено 8 августа 2020 г.
  37. ^ Лукал, Гарольд М. (декабрь 1959 г.). «Арифметические операции для цифровых компьютеров с использованием модифицированного отраженного двоичного файла». IRE-транзакции на электронных компьютерах . ЕС-8 (4): 449–458. дои : 10.1109/TEC.1959.5222057. ISSN  0367-9950. S2CID  206673385.(10 страниц)
  38. ^ Дьюар, Роберт Берридейл Кейт ; Смосна, Мэтью (1990). Микропроцессоры - взгляд программиста (1-е изд.). Институт Куранта , Нью-Йоркский университет , Нью-Йорк, США: Издательская компания McGraw-Hill . п. 14. ISBN 0-07-016638-2. LCCN  89-77320.(xviii+462 страницы)
  39. ^ «Глава 8: Десятичные инструкции» . Принципы работы IBM System/370 . ИБМ . Март 1980 года.
  40. ^ «Глава 3: Представление данных» . Справочник по архитектуре PDP-11 . Корпорация цифрового оборудования . 1983.
  41. ^ ab Справочник по архитектуре VAX-11 . Корпорация цифрового оборудования . 1985.
  42. ^ "Справочник ILE по ролевым играм" .
  43. ^ Таблица кодов символов IBM BM 1401/1440/1460/1410/7010 в BCD-порядке [ постоянная мертвая ссылка ]
  44. ^ http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.iceg200%2Fenf.htm [ постоянная мертвая ссылка ]
  45. ^ «4.7 BCD и упакованные целые числа BCD» . Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура (PDF) . Версия 072. Том. 1. Корпорация Интел . 27 мая 2020 г. [1997]. стр. 3–2, 4–9–4–11 [4–10]. 253665-072США. Архивировано (PDF) из оригинала 6 августа 2020 г. Проверено 6 августа 2020 г. п. 4-10: […] При работе с целыми числами BCD в регистрах общего назначения значения BCD могут быть распакованы (одна цифра BCD на байт) или упакованы (две цифры BCD на байт). Значение распакованного целого числа BCD — это двоичное значение младшего полубайта (биты от 0 до 3). Старший полубайт (биты с 4 по 7) может иметь любое значение во время сложения и вычитания, но должен быть равен нулю во время умножения и деления. Упакованные целые числа BCD позволяют содержать две цифры BCD в одном байте. Здесь цифра в старшем полубайте более значима, чем цифра в младшем полубайте. […] При работе с целыми числами BCD в регистрах данных FPU x87 значения BCD упаковываются в 80-битный формат и называются десятичными целыми числами. В этом формате первые 9 байтов содержат 18 цифр BCD, по 2 цифры на байт. Младшая цифра содержится в нижнем полубайте байта 0, а самая старшая цифра содержится в верхнем полубайте байта 9. Самый старший бит байта 10 содержит знаковый бит (0 = положительный и 1 = отрицательно; биты с 0 по 6 байта 10 являются неважными битами). Отрицательные десятичные целые числа не сохраняются в форме дополнения до двух ; они отличаются от положительных десятичных целых чисел только знаковым битом. Диапазон десятичных целых чисел, которые можно закодировать в этом формате, составляет от -10 18 + 1 до 10 18 - 1. Формат десятичных целых чисел существует только в памяти. Когда десятичное целое число загружается в регистр данных x87 FPU, оно автоматически преобразуется в формат с плавающей запятой двойной расширенной точности . Все десятичные целые числа точно представимы в формате двойной повышенной точности. […] [13]
  46. ^ «Набор инструкций для 68000» (PDF) . Архивировано (PDF) из оригинала 20 ноября 2023 г. Проверено 21 ноября 2023 г.(58 страниц)
  47. ^ Джонс, Дуглас В. (25 ноября 2015 г.) [1999]. «BCD-арифметика, учебное пособие». Учебники по арифметике . Айова-Сити, Айова, США: Университет Айовы , факультет компьютерных наук . Проверено 03 января 2016 г.
  48. ^ Университет Аликанте. «Архитектура на основе Cordic для высокопроизводительных десятичных вычислений» (PDF) . ИИЭЭ . Архивировано (PDF) из оригинала 5 января 2010 г. Проверено 15 августа 2015 г.
  49. ^ «Десятичное вращение CORDIC на основе выбора путем округления: алгоритм и архитектура» (PDF) . Британское компьютерное общество . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 14 августа 2015 г.
  50. ^ Закс, Родней (1982). Программирование Z80 (3-е исправленное изд.). Сайбекс Инк . 108. ИСБН 0-89588-094-6. LCCN  80-5468. ковчег:/13960/t4qk4vs4c . Проверено 8 января 2022 г.(Обратите внимание: инструкции Zilog Z80 DAA в некоторых деталях отличаются от инструкций Intel 8080 DAA.)
  51. ^ Клотье, Феликс, изд. (30 мая 2019 г.). «DAA — Десятичная корректировка AL после сложения». Архивировано из оригинала 16 января 2022 г. Проверено 16 января 2022 г.(Примечание. На основе Руководства разработчика программного обеспечения для архитектур Intel 64 и IA-32.)
  52. ^ Матур, Адитья П. (1989). Введение в микропроцессоры (3-е изд.). Тата МакГроу-Хилл Паблишинг Компани Лимитед . ISBN 978-0-07-460222-5.
  53. ^ 3GPP TS 29.002: Спецификация части мобильного приложения (MAP) (Технический отчет). 2013. сек. 17.7.8 Общие типы данных.
  54. ^ «Руководство по протоколам сигнализации и коммутации (SPS) по использованию абстрактной синтаксической нотации номер один (ASN.1) в протоколах телекоммуникационных приложений» (PDF) . п. 15. Архивировано (PDF) из оригинала 4 декабря 2013 г.
  55. ^ «Спецификация части мобильного приложения XOM (XMAP)» (PDF) . п. 93. Архивировано из оригинала (PDF) 21 февраля 2015 г. Проверено 27 июня 2013 г.
  56. ^ «Схемы счетчиков таймера в IBM PC» (PDF) . www.se.ecu.edu.au. _ Архивировано из оригинала (PDF) 10 октября 2008 г. Проверено 22 мая 2022 г.(7 страниц)
  57. ^ Техническое описание MC6818
  58. ^ Готшалк против Бенсона , 409 США 63, 72 (1972).

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

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