BCD ( двоично-десятичный код ), также называемый буквенно-цифровым BCD , буквенно-цифровым BCD , кодом обмена BCD [ 1] или BCDIC [ 1] — это семейство представлений цифр, заглавных латинских букв и некоторых специальных и управляющих символов в виде шестибитных кодов символов .
В отличие от более поздних кодировок, таких как ASCII , коды BCD не были стандартизированы. Различные производители компьютеров и даже различные линейки продуктов одного производителя часто имели свои собственные варианты, а иногда включали уникальные символы. Другие шестибитные кодировки с совершенно другими отображениями, такие как некоторые варианты FIELDATA [1] или Transcode , иногда неправильно называют BCD.
Многие варианты BCD кодируют символы от «0» до «9» как соответствующие двоичные значения.
Технически двоично-десятичное кодирование описывает кодирование десятичных чисел, в котором каждая десятичная цифра представлена фиксированным числом бит, обычно четырьмя.
С появлением карты IBM в 1928 году IBM создала код [a], способный представлять буквенно-цифровую информацию, [2] позже принятый другими производителями. Этот код представляет цифры 0-9 одним ударом и использует несколько ударов для заглавных букв и специальных символов. [3] Буква имеет два удара (зона [12,11,0] + цифра [1–9]); большинство специальных символов имеют два или три удара (зона [12,11,0,или нет] + цифра [2–7] + 8).
Код BCD представляет собой адаптацию кода перфокарты к шестибитному двоичному коду путем кодирования строк цифр (девять строк, плюс неперфорированные) в младшие четыре бита, а строк зон (три строки, плюс неперфорированные) в старшие два бита. [4] Цифра ноль (один перфорированный ряд в строке 0) обычно обрабатывается особым образом, и цифровой код был расширен до значений от 10 до 15 путем объединения цифры в диапазоне 2–7 с перфорацией в строке 8. IBM применила термины двоично-кодированная десятичная система и BCD к вариациям буквенно-цифровых кодов BCD, которые использовались в большинстве ранних компьютеров IBM, включая IBM 1620 , серию IBM 1400 и недесятичные архитектурные элементы серий IBM 700/7000 .
Среди поставщиков, использующих BCD, были Burroughs , [5] Bull , CDC , [6] IBM , General Electric (компьютерное подразделение было куплено Honeywell в 1969 году), NCR , Siemens и Sperry - UNIVAC .
В 1964 году компания IBM анонсировала 8-битный расширенный двоично-десятичный код обмена данными (EBCDIC), основанный на BCDIC, представив свою линейку System/360 .
В некоторых ранних коммерческих компьютерах [b] процент и ромб ( U+2311 ⌑ SQUARE LOZENGE ) располагались в той же кодовой точке, что и левые и правые скобки в других кодировках [c] .
Символ Recordmark или Record mark (обозначается как ‡) — это символ, используемый для обозначения конца записи . [ 7] Код BCD для этого символа — 32 8 в некоторых вариантах BCD. Ближайший эквивалент в Unicode — U+29E7 ⧧ THERMODYNAMIC , но он не встречается во многих шрифтах, поэтому вместо него часто используется U+2021 ‡ DOUBLE DAGGER . Функционально это соответствует символу EBCDIC IRS (ASCII RS ), X'1E'.
Groupmark или Group mark symbol (представленный как ) — это символ, используемый для обозначения начала или конца группы связанных полей. [8] BCD-код этого символа — 77 8 в некоторых вариантах BCD. Groupmark был предложен для стандартизации Unicode в 2015 году [9] и ему было присвоено значение U+2BD2 ⯒ GROUP MARK . Функционально это соответствует символу EBCDIC IGS (ASCII GS ), X'1D'. Сейчас он находится в Unicode 10.0 на этой позиции, но его поддерживают только шрифты Symbola и Unifont.
Wordmark , напротив, не является символом BCD. Скорее, это бит-флаг , используемый для обозначения конца слова на некоторых компьютерах с переменной длиной слова, таких как IBM 1401 .
Существует много различных версий шестибитного кода BCD. Существуют три основные категории различий:
В «испаноязычных странах» символ «Ñ» не существовал в исходной системе, поэтому большинство производителей (Bull, NCR и Control Data) выбрали «@» , но при объединении баз данных в 7-битный код ASCII возникла непоследовательность, поскольку в этой системе кодирования был выбран символ «/» , что привело к появлению двух разных кодов для одного и того же символа.
На следующих диаграммах показаны числовые значения символов BCD в шестнадцатеричной (основание 16) нотации, поскольку она наиболее четко отражает структуру 4-битной двоично-десятичной кодировки, плюс два дополнительных бита. Например, код для 'A' в строке 3x и столбце x1 — это шестнадцатеричное 31 или двоичное '11 0001'.
Первые версии BCDIC имели 48 символов, поскольку они были основаны на шаблонах перфорации перфокарт и наборах символов принтеров, ни один из которых не поощрял использование числа символов, кратного степени двойки.
Он был основан на 40-символьном коде перфокарты; исходные 37 символов (10 цифр, 26 букв и пробел) плюс три коммерчески важных символа, добавленных около 1932 года: [1] : 67 дефис-минус, используемый для печати кредитных остатков и написанных через дефис имен, амперсанд, также используемый во многих именах и адресах ( Procter & Gamble , Mr. & Mrs. Smith), и звездочка, используемая для печати неиспользуемых полей при печати чеков .
Вместо того, чтобы следовать представлению хранилища IBM 704, IBM 1401 следовал представлению ленты (происходящему от 48-символьного BCD), таким образом, используя код из всех нулей для пробела и код 10 (0x0A) для цифры ноль. Он определил формы символов для всех возможных значений, для целей документирования, [10] но только 48 из 63 непустых символов были напечатаны, и были значительные различия в том, как другие значения кодов (заштрихованы в таблице ниже) были изображены на практике. Даже другие символы различались между различными доступными цепочками печати для принтера IBM 1403 .
Кодовая страница BCDIC-A была назначена как кодовая страница 353 , также известная как CP353 . Некоторые символы в этой кодовой странице не входят в Unicode. (Дублирование '#' можно найти в собственной документации IBM, и это не ошибка. [11] )
В точке 0x1A находится рекордная отметка, в точке 0x3F — групповая отметка.
Кодовая страница BCDIC-B была назначена как кодовая страница 354 , также известная как CP354 . [12] Некоторые символы в этой кодовой странице не входят в Unicode.
В точке 0x1A находится рекордная отметка, в точке 0x3F — групповая отметка.
PTTC/BCD имел 5 опций. Было пять кодовых страниц. Они показаны ниже. Стандартная опция PTTC/BCD была назначена как Кодовая страница 355 или CP355 .
Опция PTTC/BCD H была назначена как кодовая страница 357 или CP357 .
Вариант соответствия PTTC/BCD был назначен как кодовая страница 358 или CP358 .
Варианту PTTC/BCD Monocase была присвоена кодовая страница 359 или CP359 .
Варианту PTTC/BCD Duocase была присвоена кодовая страница 360 или CP360 .
IBM 704 переупорядочил код BCDIC, чтобы обеспечить нормальный алфавитный порядок внутреннего упорядочения, с 0 перед 1 и A перед Z. Он мог автоматически переводить между этой внутренней формой и более ранней формой BCDIC при чтении и записи магнитных лент . [13] : 35
В следующей таблице показаны кодовые назначения для компьютера IBM 704. Неназначенные позиции кода отображаются как пробелы. [13] : 35
(и(Это были редко используемые символы, соответствующие условному обозначению на перфокартах цифры 0 с пробитым знаком в рядах 12 или 11.)
В следующей таблице показаны кодовые назначения для принтера типа 716, используемого, начиная с компьютера IBM 704 и до 7094. [13] : 58 Интерфейс 704 [d] отправлял на этот принтер строки виртуальной перфокарты, по два слова (72 бита) за раз, поэтому преобразование 6-битных символов BCD выполнялось программным обеспечением и не было встроено в принтер.
Это набор из 45 символов (не считая пробелов, которые принтер обрабатывает особым образом), так как символы +
, -
и *
дублируются.
Существовали некоторые различия; IBM 704 Fortran имел другой набор специальных символов (сохранялся только дублированный знак минус). [14]
Похожий код использовался для преемников IBM 709 , 7090 и 7094 , [15] но с некоторыми переназначенными специальными символами:
Ниже приведена таблица кода GBCD компании GE/Honeywell, варианта BCD. [16]
В следующей таблице показаны кодовые назначения для компьютера Burroughs B5500 , иногда называемого BIC (Burroughs Interchange Code). [17]
{{cite web}}
: Отсутствует или пусто |title=
( помощь )