Классификация | 6-битные буквенно-цифровые базовые латинские кодировки |
---|---|
Преемник | EBCDIC |
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 .
Символ 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 символов, поскольку они были основаны на шаблонах перфорации перфокарт и наборах символов принтеров, ни один из которых не поощрял использование числа символов, кратного степени двойки.
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | |||
1x | / | С | Т | У | В | Вт | Х | И | З | , | % | |||||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | $ | * | ||||
3x | & | А | Б | С | Д | Э | Ф | Г | ЧАС | я | . | ⌑ |
Он был основан на 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 .
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | : | > | √ |
1x | ¢ | / | С | Т | У | В | Вт | Х | И | З | ⧧ | , | % | = | ' | " |
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | ! | $ | * | ) | ; | Δ |
3x | & | А | Б | С | Д | Э | Ф | Г | ЧАС | я | ? | . | ⌑ | ( | < | ⯒ |
Кодовая страница BCDIC-A была назначена как кодовая страница 353 , также известная как CP353 . Некоторые символы в этой кодовой странице не входят в Unicode. (Дублирование '#' можно найти в собственной документации IBM, и это не ошибка. [11] )
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | @ | : | > | √ |
1x | ␢ | / | С | Т | У | В | Вт | Х | И | З | ⧧ | , | % | γ | \ | ⧻ |
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | ! | # | * | ] | ; | Δ |
3x | & | А | Б | С | Д | Э | Ф | Г | ЧАС | я | ? | . | ⌑ | [ | < | ⯒ |
В точке 0x1A находится рекордная отметка, в точке 0x3F — групповая отметка.
Кодовая страница BCDIC-B была назначена как кодовая страница 354 , также известная как CP354 . [12] Некоторые символы в этой кодовой странице не входят в Unicode.
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ⊙ | ' | : | > | √ |
1x | ␢ | / | С | Т | У | В | Вт | Х | И | З | ⧧ | , | ( | γ | \ | ⧻ |
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | ! | # | * | ] | ; | Δ |
3x | + | А | Б | С | Д | Э | Ф | Г | ЧАС | я | ? | . | ) | [ | < | ⯒ |
В точке 0x1A находится рекордная отметка, в точке 0x3F — групповая отметка.
PTTC/BCD имел 5 опций. Было пять кодовых страниц. Они показаны ниже. Стандартная опция PTTC/BCD была назначена как Кодовая страница 355 или CP355 .
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
1x | @ | / | С | Т | У | В | Вт | Х | И | З | ⧧ | , | γ | |||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | < | $ | ||||
3x | & | А | Б | С | Д | Э | Ф | Г | ЧАС | я | ) | . |
Опция PTTC/BCD H была назначена как кодовая страница 357 или CP357 .
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | = | ||||
1x | ' | / | С | Т | У | В | Вт | Х | И | З | ⧧ | , | ||||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | ! | $ | ||||
3x | + | А | Б | С | Д | Э | Ф | Г | ЧАС | я | ? | . |
Вариант соответствия PTTC/BCD был назначен как кодовая страница 358 или CP358 .
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | ' | ||||
1x | ! | / | С | Т | У | В | Вт | Х | И | З | ⧧ | , | ||||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | < | ; | ||||
3x | = | А | Б | С | Д | Э | Ф | Г | ЧАС | я | > | . |
Варианту PTTC/BCD Monocase была присвоена кодовая страница 359 или CP359 .
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
1x | @ | / | С | Т | У | В | Вт | Х | И | З | , | |||||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | $ | |||||
3x | & | А | Б | С | Д | Э | Ф | Г | ЧАС | я | . |
Варианту PTTC/BCD Duocase была присвоена кодовая страница 360 или CP360 .
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | космос | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | # | ||||
1x | @ | / | С | Т | У | В | Вт | Х | И | З | , | |||||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | $ | |||||
3x | & | А | Б | С | Д | Э | Ф | Г | ЧАС | я | . |
IBM 704 переупорядочил код BCDIC, чтобы обеспечить нормальный алфавитный порядок внутреннего упорядочения, с 0 перед 1 и A перед Z. Он мог автоматически переводить между этой внутренней формой и более ранней формой BCDIC при чтении и записи магнитных лент . [13] : 35
В следующей таблице показаны кодовые назначения для компьютера IBM 704. Неназначенные позиции кода отображаются как пробелы. [13] : 35
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | # | @ | ||||
1x | & | А | Б | С | Д | Э | Ф | Г | ЧАС | я | +0 | . | ⌑ | |||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | −0 | $ | * | |||
3x | космос | / | С | Т | У | В | Вт | Х | И | З | ⧧ | , | % |
(+0и−0(Это были редко используемые символы, соответствующие условному обозначению на перфокартах цифры 0 с пробитым знаком в рядах 12 или 11.)
В следующей таблице показаны кодовые назначения для принтера типа 716, используемого, начиная с компьютера IBM 704 и до 7094. [13] : 58 Интерфейс 704 [b] отправлял на этот принтер строки виртуальной перфокарты, по два слова (72 бита) за раз, поэтому преобразование 6-битных символов BCD выполнялось программным обеспечением и не было встроено в принтер.
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | + | - | ||||
1x | + | А | Б | С | Д | Э | Ф | Г | ЧАС | я | . | ⌑ | ||||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | $ | * | ||||
3x | 0 | / | С | Т | У | В | Вт | Х | И | З | , | % |
Это набор из 45 символов (не считая пробелов, которые принтер обрабатывает особым образом), так как символы +
, -
и *
дублируются.
Существовали некоторые различия; IBM 704 Fortran имел другой набор специальных символов (сохранялся только дублированный знак минус). [14]
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | * | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | = | - | ||||
1x | + | А | Б | С | Д | Э | Ф | Г | ЧАС | я | . | ) | ||||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | $ | * | ||||
3x | 0 | / | С | Т | У | В | Вт | Х | И | З | , | ( |
Похожий код использовался для преемников IBM 709 , 7090 и 7094 , [15] но с некоторыми переназначенными специальными символами:
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | = | " | ||||
1x | & | А | Б | С | Д | Э | Ф | Г | ЧАС | я | +0 | . | ) | |||
2x | - | Дж. | К | Л | М | Н | О | П | В | Р | −0 | $ | * | |||
3x | космос | / | С | Т | У | В | Вт | Х | И | З | ± | , | ( |
Ниже приведена таблица кода GBCD компании GE/Honeywell, варианта BCD. [16]
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | [ | # | @ | : | > | ? |
1x | космос | А | Б | С | Д | Э | Ф | Г | ЧАС | я | & | . | ] | ( | < | \ |
2x | ^ | Дж. | К | Л | М | Н | О | П | В | Р | - | $ | * | ) | ; | ' |
3x | + | / | С | Т | У | В | Вт | Х | И | З | _ | , | % | = | " | ! |
В следующей таблице показаны кодовые назначения для компьютера Burroughs B5500 , иногда называемого BIC (Burroughs Interchange Code). [17]
х0 | х1 | х2 | х3 | х4 | х5 | х6 | х7 | х8 | х9 | хА | хБ | хС | хД | хЭ | хФ | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | # | @ | ? | : | > | ≥ |
1x | + | А | Б | С | Д | Э | Ф | Г | ЧАС | я | . | [ | & | ( | < | ← |
2x | × | Дж. | К | Л | М | Н | О | П | В | Р | $ | * | - | ) | ; | ≤ |
3x | космос | / | С | Т | У | В | Вт | Х | И | З | , | % | ≠ | = | ] | " |
{{cite web}}
: Отсутствует или пусто |title=
( помощь )