BCD(문자 부호화)

BCD (character encoding)
BCD 교환 코드
분류6비트 영숫자 기본 라틴 인코딩
에 의해 성공자EBCDIC

BCD(이진 코드 10진수)는 영숫자 BCD, 영숫자 BCD,[1][1] BCDIC라고도 하며 숫자, 대문자 라틴 문자 및 일부 특수 문자 및 제어 문자를 6비트 문자 코드로 표현한 패밀리입니다.

ASCII와 같은 이후의 인코딩과는 달리 BCD 코드는 표준화되지 않았습니다.다른 컴퓨터 제조사, 심지어 같은 제조사의 다른 제품 라인도 종종 그들만의 변형을 가지고 있었고, 때로는 독특한 특징을 포함하기도 했습니다.일부[1] FEILDATA 바리안트나 트랜스코드 등 완전히 다른 매핑을 가진 다른 6비트 인코딩이 BCD라고 잘못 표시될 수 있습니다.

BCD의 많은 변형에서는 '0'에서 '9'까지의 문자를 대응하는 바이너리 값으로 인코딩합니다.

역사

엄밀히 말하면, 바이너리 부호화 십진수는, 각 십진수가 고정 비트수(통상은 4비트)로 표시되는 십진수의 인코딩을 나타냅니다.

1928년 IBM 카드가 등장하면서 IBM은 영숫자 [2]정보를 나타낼 수 있는 코드[a] 만들었고, 나중에 다른 제조업체에서 채택했습니다.이 코드는 0 ~9 의 숫자를 1 개의 펀치로 나타내며, 대문자 및 특수 [3]문자에 복수의 펀치를 사용합니다.문자에는 2개의 펀치(존 [12,11,0]+자리 [1 ~9])가 있습니다.대부분의 특수문자는 2개 또는3개의 펀치(존 [12,11,0 또는 없음]+자리 [2 ~7]+8)가 있습니다.

BCD 코드는 숫자 행(9줄+분할되지 않음)을 하위4비트로, 존 행(3줄+분할되지 않음)을 상위2비트로 [4]부호화함으로써 펀치된 카드코드를 6비트의 바이너리 코드로 변환한 것입니다.숫자 0(0행의 단일 펀치)은 보통 특별한 방법으로 처리되며, 숫자 코드는 2 ~7 범위의 숫자와 8행의 펀치를 조합하여 10 ~15의 값으로 확장되었습니다.IBM은 IBM 1620, IBM 1400 시리즈 및 IBM 700/7000 시리즈의 비 10진 아키텍처 구성원을 포함하여 대부분의 초기 IBM 컴퓨터에 사용된 BCD 알파벳의 변형에 이진 코드 10진수 및 BCD라는 용어를 적용했습니다.

BCD를 사용하는 벤더로는 Burroughs,[5] Bull, CDC,[6] IBM, General Electric(1969년에 Honeywell이 컴퓨터 부문을 인수), NCR, Siemens 및 Sperry-UNIVAC가 있습니다.

IBM은 1964년 시스템/360 라인의 도입과 함께 BCDIC 기반의 8비트 EBCDIC(Extended Binary Coded Decimal Interchange Code)를 발표했습니다.

특수 문자

Recordmark 또는 Recordmark 문자('로 표시)[7]레코드의 끝을 표시하기 위해 사용되는 문자입니다.이 문자의 BCD 코드는 일부 BCD 바리안트에서는 32입니다8.The closest Unicode equivalent is U+29E7 THERMODYNAMIC, but that is not found in many fonts, so U+2021 DOUBLE DAGGER is often used instead.기능적으로는 EBCDIC IRS 문자(ASCII RS), X'1E'에 대응합니다.

Groupmark 또는 Groupmark 문자(로 표시됨)는 관련 필드 그룹의 시작 또는 종료를 나타내기 위해 사용되는 문자입니다.[8]이 문자의 BCD 코드는 일부 BCD 바리안트에서는 77입니다8.그룹 마크는 2015년에 [9]유니코드 표준화를 위해 제안되었으며, 값 U+2BD2 group GROUP MARK에 할당되었다.기능적으로는 EBCDIC IGS 문자(ASCII GS), X'1D'에 대응합니다.현재는 Unicode 10.0으로 되어 있습니다만, Symbola 및 Unifont 글꼴만이 서포트되고 있습니다.

반면 Wordmark는 BCD 문자가 아닙니다.오히려 IBM 1401과 같은 일부 가변 워드 길이 컴퓨터에서 단어의 끝을 표시하기 위해 사용되는 플래그 비트입니다.

BCD 코드 바리에이션

6비트 BCD 코드에는 다양한 버전이 있습니다.차이에는 크게 세 가지 범주가 있습니다.

  1. 존 펀치에서 상위 비트로의 매핑.모든 코드는 존펀치를 00의 비트패턴으로 변환하지 않지만 일부 코드는 존펀치를 12-11-0 순서로 인코딩하여 알파벳 순서를 유지하는 반면 다른 코드는 0-11-12 순서를 사용하여 알파벳이 부분적으로 반전됩니다.
  2. 숫자 0의 처리입니다.펀치 형식의 직변환에서는 숫자1 ~ 9 앞에 공백이 배치되어 0이 완전히 다른 곳에 부호화됩니다.모든 코드에는 숫자 0을 모두 제로 바이너리 코드로 변환하거나(및 빈칸을 다른 곳으로 이동), 바이너리 코드 001010(10진수 10)을 부여하고 다른 곳에서 8+2 펀치를 사용하는 특수한 케이스 처리가 있습니다.
  3. 특수 문자 할당입니다.기본적인 영숫자 세트를 넘는 코드에 할당된 문자는 컴퓨터의 한 모델 내에서조차 매우 다양했습니다.

"스페인어 사용 국가"에서는 문자 "NN"이 원래 시스템에 존재하지 않았기 때문에 "@"는 대부분의 제조업체에 의해 선택되었지만, 데이터베이스를 7비트 ASCII 코드로 병합할 때 불일치가 발생하였고, 그 코딩 시스템에서는 "/" 문자가 선택되었기 때문에 동일한 문자에 대해 두 개의 다른 코드가 생성되었다.음.정말.

BCD 코드의 예

다음 표는 BCD 문자의 숫자 값을 16진수(기본값-16) 표기로 나타내며, 이는 4비트 이진 코드화된 10진수 구조와 2개의 추가 비트를 가장 명확하게 반영하고 있습니다.예를 들어, 3x 행과 x1 열의 'A' 코드는 16진수 31 또는 이진수 '11 0001'입니다.

테이프 스타일

48 문자의 BCD 코드

BCDIC의 첫 번째 버전은 카드 펀치 패턴과 프린터 문자 세트를 기반으로 했기 때문에 48자였습니다. 두 가지 모두 두 글자 수 이상의 힘을 갖는 것을 권장하지 않았습니다.

IBM 48자 BCDIC[1]: 68 코드
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 공간 1 2 3 4 5 6 7 8 9 0 # @
1배 / S T U V W X Y Z , %
2배 - J K L M N O P Q R $ *
3배 & A B C D E F G H I .

이것은40-characterpunched 카드 코드에 원래 37(10자리 숫자, 26글자, 용지.),+상업적으로 중요한 캐릭터들 1932년을 둘러싼[1]:67hyphen-minus 신용 잔고, 하이픈으로 잇는 이름 인쇄에 사용되는, 앰퍼샌드 또한 많은 이름과 주소의(프록터&갬블, Mr.&스미스 부인)사용되고 덧붙였다 근거한 것이다.별표 t사용되o 수표 인쇄 시 사용되지 않는 필드를 덮어씁니다.

IBM 1401 BCD 코드

IBM 704의 스토리지 표현을 따르는 대신 IBM 1401은 테이프 표현(48자 BCD에서 파생됨)을 따랐습니다. 따라서 공백에 대해서는 모두 제로 코드를, 숫자 0에 대해서는 코드 10(0x0A)을 사용했습니다.문서화를 [10]위해 가능한 모든 값에 대해 문자 형식을 정의했지만 63개의 공백이 아닌 문자 중 48개만 인쇄할 수 있었고, 실제로 다른 코드 값(아래 표에서 음영 처리)이 어떻게 표현되는지에 상당한 차이가 있었습니다.IBM 1403 프린터에 사용할 수 있는 인쇄 체인마다 다른 문자도 다릅니다.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 공간 1 2 3 4 5 6 7 8 9 0 # @ : >
1배 ¢ / S T U V W X Y Z , % = ' "
2배 - J K L M N O P Q R ! $ * ) ; Δ
3배 & A B C D E F G H I ? . ( < >

코드 페이지 353

BCDIC-A 코드 페이지는 CP353이라고도 하는 코드 페이지 353으로 할당되었습니다.이 코드 페이지의 일부 문자는 유니코드로 되어 있지 않습니다.('#'의 중복은 IBM의 자체 문서에서 확인할 수 있으며, 여기서 실수가 아닙니다.)[11]

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 공간 1 2 3 4 5 6 7 8 9 0 # @ : >
1배 / S T U V W X Y Z , % γ \
2배 - J K L M N O P Q R ! # * ] ; Δ
3배 & A B C D E F G H I ? . [ < >

0x1A가 기록 마크입니다.0x3F는 그룹 마크입니다.

PTTC/BCD 코드 페이지

PTTC/BCD에는 5가지 옵션이 있습니다.5개의 코드 페이지가 있었어요이것들은 다음과 같습니다.PTTC/BCD Standard 옵션은 Code page 355(CP355)로 할당되었습니다.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 공간 1 2 3 4 5 6 7 8 9 0 #
1배 @ / S T U V W X Y Z , γ
2배 - J K L M N O P Q R < > $
3배 & A B C D E F G H I ) .

PTTC/BCD H 옵션은 Code page 357 또는 CP357할당되었습니다.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 공간 1 2 3 4 5 6 7 8 9 0 =
1배 ' / S T U V W X Y Z ,
2배 - J K L M N O P Q R ! $
3배 + A B C D E F G H I ? .

PTTC/BCD 대응 옵션은 Code page 358 또는 CP358할당되었습니다.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 공간 1 2 3 4 5 6 7 8 9 0 '
1배 ! / S T U V W X Y Z ,
2배 - J K L M N O P Q R < > ;
3배 = A B C D E F G H I > .

PTTC/BCD 모노케이스 옵션은 코드 페이지 359 또는 CP359지정되었습니다.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 공간 1 2 3 4 5 6 7 8 9 0 #
1배 @ / S T U V W X Y Z ,
2배 - J K L M N O P Q R $
3배 & A B C D E F G H I .

PTTC/BCD Duocase 옵션은 Code page 360 또는 CP360으로 할당되었습니다.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 공간 1 2 3 4 5 6 7 8 9 0 #
1배 @ / S T U V W X Y Z ,
2배 - J K L M N O P Q R $
3배 & A B C D E F G H I .

IBM 704 스토리지 스타일

IBM 704 BCD 코드

IBM 704는 BCDIC 코드를 정렬하여 1 앞에 0을, Z 앞에 A를 두도록 내부적으로 일반적인 알파벳 정렬 순서를 변경했습니다.자기 [12]: 35 테이프를 읽고 쓸 때 이 내부 형태와 이전의 BCDIC 사이를 자동으로 번역할 수 있습니다.

다음 표는 IBM 704 컴퓨터에 대한 코드 할당을 보여 줍니다.할당되지 않은 코드 위치는 [12]: 35 공백으로 표시됩니다.

IBM 704 문자 집합
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 0 1 2 3 4 5 6 7 8 9 # @
1배 & A B C D E F G H I +0 .
2배 - J K L M N O P Q R 0 $ *
3배 공간 / S T U V W X Y Z , %

(+0-0)은 12행 또는 11행에 오버펀치된 기호가 있는 숫자0 의 펀치 카드 규칙에 대응하는 문자는 거의 사용되지 않았습니다.

다음 표는 IBM 704 컴퓨터에서 7094까지 [12]: 58 사용된 유형 716 프린터의 코드 할당을 보여줍니다.704 인터페이스는[b] 가상 펀치 카드 행을 한 번에 2워드(72비트)씩 이 프린터로 전송했기 때문에 6비트 BCD 문자로부터의 매핑은 소프트웨어로 이루어졌으며 프린터에 내장되어 있지 않았습니다.

IBM 716 프린터 문자 집합 G
구역
펀치
숫자 펀치
1 2 3 4 5 6 7 8 9 8+3 8+4
없음. * 1 2 3 4 5 6 7 8 9 + -
12 + A B C D E F G H I .
11 - J K L M N O P Q R $ *
0 0 / S T U V W X Y Z , %

이것은, 45 문자(공백은 카운트 하지 않고, 프린터로 특별히 처리)의 레퍼토리로 되어 있습니다.+,-그리고.*중복됩니다.

Fortran 문자 집합

IBM 704 Fortran에는 다른 특수 문자 집합이 있습니다(복제된 마이너스 [13]기호만 유지).

IBM 716 프린터 Fortran 문자 집합
구역
펀치
숫자 펀치
1 2 3 4 5 6 7 8 9 8+3 8+4
없음. * 1 2 3 4 5 6 7 8 9 = -
12 + A B C D E F G H I . )
11 - J K L M N O P Q R $ *
0 0 / S T U V W X Y Z , (

IBM 709, 70907094 [14]후속 제품에도 유사한 코드가 사용되었지만 일부 특수 문자가 재할당되었습니다.

IBM 7090/7094 문자 집합
x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 0 1 2 3 4 5 6 7 8 9 = "
1배 & A B C D E F G H I +0 . )
2배 - J K L M N O P Q R 0 $ *
3배 공간 / S T U V W X Y Z ± , (

GBCD 코드

아래 표는 BCD의 [15]변형인 GE/Honeywell의 GBCD 코드입니다.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 0 1 2 3 4 5 6 7 8 9 [ # @ : > ?
1배 공간 A B C D E F G H I & . ] ( < > \
2배 ^ J K L M N O P Q R - $ * ) ; '
3배 + / S T U V W X Y Z _ , % = " !

Burroughs B5500 BCD 코드

다음 표는 BIC(Burroughs Interchange Code)[16]라고도 하는 Burroughs B5500 컴퓨터의 코드 할당을 보여 줍니다.

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF
0x 0 1 2 3 4 5 6 7 8 9 # @ ? : >
1배 + A B C D E F G H I . [ & ( < >
2배 × J K L M N O P Q R $ * - ) ;
3배 공간 / S T U V W X Y Z , % = ] "

「 」를 참조해 주세요.

메모들

  1. ^ 실제로 여러 개의 카드 코드가 있습니다. 예를 들어 1964년에는 약간 다른 문자 집합을 가진 IBM 026 버전이 10개 있었습니다.
  2. ^ 7090 등의 인터페이스는 다르지만 소프트웨어가 매핑을 수행해야 합니다.

레퍼런스

  1. ^ a b c d e Mackenzie, Charles E. (1980). Coded Character Sets, History and Development (PDF). The Systems Programming Series (1 ed.). Addison-Wesley Publishing Company, Inc. ISBN 0-201-14460-3. LCCN 77-90165. Archived from the original (PDF) on 2016-05-26. Retrieved 2017-04-22. [1]
  2. ^ Pugh, Emerson W.; Heide, Lars. "STARS:Punched Card Equipment". IEEE Global History Network. Archived from the original on 2012-05-11. Retrieved 2012-06-09.
  3. ^ Pugh, Emerson W. (1995). Building IBM: Shaping and Industry and Its Technology. MIT Press. pp. 50–51. ISBN 978-0-262-16147-3.
  4. ^ Jones, Douglas W. "Punched Card Codes". Retrieved 2014-01-01.
  5. ^ Burroughs B5500 Information Processing Systems: Reference Manual (PDF). Burroughs Corporation. 1964.
  6. ^ Control Data Corporation (1965). Codes/Control Data 6600 Computer System (PDF).
  7. ^ "Record-mark". Encyclopedia. PC Magazine. Retrieved 2016-04-09.
  8. ^ "group mark". Encyclopedia.com. Retrieved 2016-04-09.
  9. ^ Shirriff, Ken. "Proposal for addition of Group Mark symbol" (PDF). unicode.org. Retrieved 2016-04-09.
  10. ^ IBM 1401 Data Processing System: Reference Manual (PDF). IBM. April 1962. p. 170. A24-1403-5. Archived from the original (PDF) on 2012-03-14.
  11. ^ "Systems i Software Globalization cp00353z" (PDF). www-03.ibm.com. Archived from the original (PDF) on 2013-01-21. Retrieved 2022-06-30.
  12. ^ a b c IBM 704 electronic data-processing machine manual of operation (PDF). IBM. 1955. pp. 35, 58. Form 24-6661-2. Retrieved 2017-04-22.
  13. ^ "Fortran Automatic Coding System for the IBM 704" (PDF). IBM. 1956-10-15. p. 49. Retrieved 2015-09-15.
  14. ^ Harper, Jack (2001-08-21). "IBM 7090/94 Character Representation". Retrieved 2017-04-22.
  15. ^ "Section: Tables of characters in BULL computers" (PDF). Archived from the original (PDF) on 2011-07-08. Retrieved 2010-11-15.
  16. ^ Burroughs B 5500 Information Processing Systems Extended Algol Reference Manual (PDF). 1966. p. B-1.

추가 정보