8 비트 문자 이외의 플랫폼이있는 플랫폼은 무엇입니까?


136

때때로, 누군가 SO char(일명 '바이트')가 반드시 8 비트는 아니라고 지적합니다 .

8 비트 char는 거의 보편적 인 것 같습니다 . 주류 플랫폼의 char경우 시장에서 생존 가능성을 보장하기 위해 8 비트가 필요하다고 생각했을 것 입니다.

현재와 ​​역사적으로 char8 비트가 아닌 어떤 플랫폼을 사용 하며 왜 "일반"8 비트와 다른가?

코드를 작성하고 플랫폼 간 지원 (예 : 범용 라이브러리)에 대해 생각할 때 8 비트가 아닌 플랫폼에 어떤 종류의 고려가 필요 char합니까?

과거 char에는 16 비트 인 일부 아날로그 장치 DSP를 살펴 보았습니다 . DSP는 내가 생각하는 틈새 아키텍처입니다. (그 당시에도 수작업으로 코딩 된 어셈블러는 사용 가능한 C 컴파일러가 할 수있는 것을 쉽게 이길 수 있었으므로 해당 플랫폼에서 C에 대한 경험이 많지 않았습니다.)


9
CDC Cyber ​​시리즈에는 6/12 비트 인코딩이있었습니다. 가장 인기있는 문자는 6 비트였습니다. 나머지 문자는 12 비트를 사용했습니다.
토마스 매튜

2
PDP-11이 문제를 해결했습니다. 문자를 문자로 인코딩 할 수 있다는 개념은 심각하게 사용되지 않습니다.
한스 Passant

7
"PDP-11이 문제를 일으켰습니다."-PDP-11에 대해 C가 8 비트 바이트로 처음 구현 되었기 때문입니까? 그러나 C는 다음 9 비트 바이트의 Honeywell 시스템에 구현되었습니다. K & R 버젼 1을 참조하십시오. 또한, 질문은 문자 (요청되지 않은 것을 인코딩하는 하나 이상의 바이트)에 관한 것이 아니라 문자 (즉, 바이트)에 관한 것입니다.
Windows 프로그래머

6
DEC-10 및 DEC-20에는 36 비트 단어가 있습니다. 단어 당 5 개의 7 비트 ASCII 문자가 일반적이었습니다. 6 개의 6 비트 문자도 사용되었습니다.
David R Tribble

3
@CraigMcQueen : 내가 정확하게 기억한다면, Atmel 마이크로 컨트롤러 용 CodeVision은 char의 크기를 선택할 수 있습니다
vsz

답변:


80

char또한 Texas Instruments C54x DSP에서 16 비트로, 예를 들어 OMAP2에서 나타났습니다. 16 비트와 32 비트의 다른 DSP가 있습니다 char. 24 비트 DSP에 대해 들어 본 것 같지만 무엇을 기억할 수 없으므로 상상했을 수도 있습니다.

또 다른 고려 사항은 POSIX가 위임한다는 것 CHAR_BIT == 8입니다. 따라서 POSIX를 사용하는 경우 가정 할 수 있습니다. 누군가가 나중에 POSIX를 거의 구현하기 위해 코드를 이식 해야하는 경우 사용하는 기능이 다르지만 크기가 다르기 char때문에 불행한 일입니다.

그러나 일반적으로 문제를 해결하는 것보다 문제를 해결하는 것이 거의 항상 쉽다고 생각합니다. 그냥 입력하십시오 CHAR_BIT. 정확한 8 비트 유형을 원하면을 사용하십시오 int8_t. 예상치 못한 크기를 자동으로 사용하는 대신 코드를 제공하지 않는 구현에서 코드가 시끄럽게 컴파일되지 않습니다. 적어도, 내가 그럴만 한 이유가있는 사건에 부딪쳤다면, 나는 그것을 주장 할 것입니다.


2
TI C62xx 및 C64xx DSP에도 16 비트 문자가 있습니다. (uint8_t는 해당 플랫폼에 정의되어 있지 않습니다.)
myron-semack

7
오디오 처리를위한 많은 DSP는 24 비트 시스템입니다. On Semi 의 BelaSigna DSP (AMI Semi를 구입 한 후); Freescale 의 DSP56K / Symphony Audio DSP (모토로라에서 분리 한 후)
David Cary

2
@msemack C64xx 8/16/32/40는 하드웨어 및 8 비트 문자 갖는다
user3528438

4
오히려보다 assert()(즉, 당신이 무엇을 의미하는 경우), 내가 사용하는 거라고 #if CHAR_BIT != 8... #error "I require CHAR_BIT == 8"...#endif
키이스 톰슨

1
@KeithThompson 사용하지 않을 이유가 static_assert()있습니까?
Qix-모니카가

37

코드를 작성하고 플랫폼 간 지원 (예 : 범용 라이브러리)에 대해 생각할 때 8 비트가 아닌 문자가있는 플랫폼에 어떤 종류의 고려가 필요합니까?

규칙에 따라 행동 할 때 "고려해야 할 가치"는 그리 크지 않습니다. 예를 들어 C ++에서 표준은 모든 바이트가 "최소한"8 비트를 가질 것이라고 말합니다. 코드에서 바이트가 정확히 8 비트라고 가정하면 표준을 위반하는 것입니다.

" 물론 모든 바이트에는 8 비트가 있습니다!"라는 말이 들립니다. 그러나 많은 영리한 사람들이 보장되지 않은 가정에 의존하고 모든 것이 파산되었습니다. 역사는 그러한 예들로 가득합니다.

예를 들어, 90 년대 초반의 대부분의 개발자들은 대부분의 소비자 CPU가 거의 동등한 전력을 사용하기 때문에 고정 된 횟수의주기를 갖는 특정 비 작동 CPU 타이밍 지연이 일정량의 클럭 시간을 필요로한다고 가정했습니다. 불행히도 컴퓨터는 매우 빠르게 빨라졌습니다. 아이러니하게도 시간 지연 기술을 사용하는 게임을 적절한 속도로 재생할 수 있도록 컴퓨터 속도를 낮추는 것이 목적인 "터보"버튼으로 상자가 등장했습니다.


한 의견 제시자는 표준에서 char이 최소 8 비트를 가져야한다고 말하는 곳을 물었습니다. 섹션 5.2.4.2.1에 있습니다. 이 섹션에서는 CHAR_BIT주소를 지정할 수있는 가장 작은 엔티티의 비트 수를 정의 하고 기본값은 8입니다.

그들의 구현-정의 된 값은 동일한 부호로 표시된 것 이상의 크기 (절대 값) 이상이어야한다.

따라서 8 이상의 숫자는로 구현을 대체하기에 적합합니다 CHAR_BIT.


6
최소 20 년 동안 터보 버튼을 보지 못했습니다. 질문과 관련이 있다고 생각하십니까?
Mark Ransom

29
@ 마크 랜섬 : 그게 요점입니다. 개발자는 종종 현재의 사실처럼 보이지만 처음에 보이는 것보다 훨씬 덜 가정 한 가정에 의존합니다. ( 실수를 한 횟수는 셀 수 없습니다 !) 터보 버튼은 불필요한 가정을하지 말고 언어 표준에 의해 보장되지 않는 가정을하지 않는 것을 잊지 말아야합니다. 불변의 사실.
John Feminella

1
C ++ 표준에서 최소 8 비트를 가지고 있다고 말할 수 있습니까? 그러나 나는 개인적으로 표준에서 그것을 찾지 못했습니다. 내가 Standard에서 찾은 유일한 것은 char64 개 이상이 있지만 128 개 미만이어서 7 비트면 충분하다는 것입니다.
Adam Badura

6
섹션 18.2.2는 이에 대한 C 표준을 호출합니다. C 표준에서는 섹션 7.10과 섹션 5.4.2.4.1입니다. C 표준 페이지 22.
Windows 프로그래머

2
따라서 다른 답변과 의견은 5 비트, 6 비트 및 7 비트 바이트가있는 기계를 언급합니다. 표준을 준수하는 해당 시스템에서 C 프로그램을 실행할 수 없음을 의미합니까?
Jerry Jeremiah 1

34

36 비트 아키텍처를 가진 머신은 9 비트 바이트를 갖습니다. Wikipedia에 따르면 36 비트 아키텍처를 가진 머신 은 다음과 같습니다.

  • Digital Equipment Corporation PDP-6 / 10
  • IBM 701/704/709/7090/7094
  • UNIVAC 1103 / 1103A / 1105 / 1100 / 2200,

7
또한 C가 구현 된 두 번째 시스템과 같은 Honeywell 시스템도 있습니다. K & R 버전 1을 참조하십시오.
Windows 프로그래머

5
실제로, 12 월 10 일에는 6 비트 문자가있었습니다.이 중 6 개를 36 비트 단어 (12 월 10 일 프로그래머 이야기)

2
DEC-20은 TOPS-20 O / S에서 36 비트 워드 당 5 개의 7 비트 ASCII 문자를 사용했습니다.
David R Tribble

3
이 농담은 실제로이 아키텍처에서 유니 코드를 지원하기 위해 구현되었습니다.
Joshua

9
8 진수가 실제로 사용 된 이유는 2 개의 16 진수가 8 비트 바이트를 깔끔하게 나타 내기 때문에 오늘날 16 진수를 사용하는 것처럼 3 개의 8 진수가 9 비트 바이트를 깔끔하게 나타 내기 때문이라고 생각합니다.
bames53

18

내가 알고있는 몇 가지 :

  • DEC PDP-10 : 가변적이지만 대부분의 경우 7 비트 문자는 36 비트 워드 당 5 개, 그렇지 않으면 9 비트 문자, 워드 당 4 개
  • 제어 데이터 메인 프레임 (CDC-6400, 6500, 6600, 7600, Cyber ​​170, Cyber ​​176 등) 6 비트 문자 (60 비트 워드 당 10 개).
  • 유니시스 메인 프레임 : 9 비트 / 바이트
  • Windows CE :`char` 유형을 전혀 지원하지 않습니다. 대신 16 비트 wchar_t가 필요합니다.

2
@ephemient : PDP-10 / DecSystem 10 / DecSystem 20 용으로 적어도 하나의 (사전 표준) C 컴파일러가 있다고 확신합니다. 그러나 CDC 메인 프레임 용 C 컴파일러에 매우 놀랐습니다. 주로 숫자 작업에 사용되므로 Fortran 컴파일러가 가장 큰 문제였습니다. 다른 사람들에게는 C 컴파일러가 있다고 확신합니다.
Jerry Coffin

3
Windows CE 컴파일러가 실제로 char유형을 전혀 지원하지 않았습니까 ? 시스템 라이브러리는 문자열을 취하는 넓은 문자 버전의 함수 만 지원했으며 최소한 일부 WinCE 버전은 strlen과 같은 ANSI 문자열 함수를 제거하여 문자 문자열 처리를 중지한다는 것을 알고 있습니다. 그러나 실제로 문자 유형이 없었습니까? 무엇입니까 sizeof(TCHAR)? malloc은 어떤 유형을 반환 했습니까? Java byte유형 은 어떻게 구현 되었습니까?
Steve Jessop

10
Windows CE는 char 인 바이트를 지원합니다. Richard Pennington의 답변에 대한 Craig McQueen의 의견을 참조하십시오. 바이트는 크기에 관계없이 Windows CE에서 다른 곳과 마찬가지로 많이 필요합니다.
Windows 프로그래머

2
PDP-10에 대한 C의 구현은 KCC와 gcc 포트 ( pdp10.nocrew.org/gcc )가 적어도 두 가지 있습니다.
AProgrammer

3
C 표준에서는 PDP-10에 대해 언급 한 것처럼 36 비트 워드 당 5 개로 포장 된 7 비트 문자는 허용하지 않으며 제어 데이터 메인 프레임에 대해 언급 한 것처럼 6 비트 문자도 허용하지 않습니다. 참조 parashift.com/c++-faq-lite/intrinsic-types.html#faq-26.6
켄 블룸

15

완전히 이식 가능한 코드는 없습니다. :-)

예, 다양한 바이트 / 문자 크기가있을 수 있습니다. 예, CHAR_BIT및의 값이 매우 특이한 플랫폼에 대해 C / C ++ 구현이있을 수 있습니다 UCHAR_MAX. 예, 때로는 문자 크기에 의존하지 않는 코드를 작성할 수 있습니다.

그러나 거의 모든 실제 코드는 독립형이 아닙니다. 예를 들어 바이너리 메시지를 네트워크로 보내는 코드를 작성하고있을 수 있습니다 (프로토콜은 중요하지 않습니다). 필요한 필드가 포함 된 구조를 정의 할 수 있습니다. 직렬화 해야하는 것보다. 구조를 출력 버퍼에 바이너리로 복사하는 것은 이식성이 없습니다. 일반적으로 플랫폼의 바이트 순서 나 구조 멤버 정렬을 모르므로 구조는 데이터를 보유하지만 데이터를 직렬화하는 방법은 설명하지 않습니다. .

확인. 바이트 순서 변환을 수행 하고 버퍼를 uint32_t사용하여 구조 멤버 (예 : 또는 이와 유사한)를 이동할 수 있습니다 memcpy. 왜 memcpy? 대상 주소가 올바르게 정렬되지 않은 경우 32 비트 (16 비트, 64 비트-차이 없음)를 작성할 수없는 플랫폼이 많이 있기 때문입니다.

따라서 이미 이식성을 달성하기 위해 많은 노력을 기울였습니다.

그리고 이제 마지막 질문입니다. 버퍼가 있습니다. 데이터가 TCP / IP 네트워크로 전송됩니다. 이러한 네트워크는 8 비트 바이트를 가정합니다. 문제는 버퍼의 유형은 무엇입니까? 당신의 문자가 9 비트라면? 16 비트라면? 24? 어쩌면 각 문자는 네트워크로 전송 된 하나의 8 비트 바이트에 해당하며 8 비트 만 사용됩니까? 아니면 여러 네트워크 바이트가 24/16/9 비트 문자로 압축되어 있습니까? 그것은 하나의 질문이며, 모든 경우에 맞는 단일 답변이 있다고 믿기가 어렵습니다. 많은 것은 대상 플랫폼의 소켓 구현에 달려 있습니다.

그래서 내가 말하는 것. 일반적으로 코드는 어느 정도 쉽게 이식 할 수 있습니다 . 다른 플랫폼에서 코드를 사용할 것으로 예상되면 그렇게하는 것이 매우 중요합니다. 그러나 실제 코드는 거의 항상 다른 코드 (위의 예제에서 소켓 구현)에 의존 하기 때문에 그 측정 이상의 이식성을 향상시키는 것은 많은 노력이 필요하고 종종 거의 제공하지 않는 것 입니다. 8 비트 이외의 바이트가있는 플랫폼에서 작동하는 코드 기능의 약 90 %가 8 비트에 바인딩 된 환경을 사용하기 때문에 거의 쓸모가 없다고 확신합니다. 바이트 크기를 확인하고 컴파일 시간 어설 션을 수행하십시오. 매우 특이한 플랫폼을 위해서는 많은 것을 다시 작성해야 할 것입니다.

그러나 코드가 "독립형"이라면 왜 안될까요? 다른 바이트 크기를 허용하는 방식으로 작성할 수 있습니다.


4
값당 하나의 옥텟을 저장하는 unsigned char경우 코드에서 옥텟 시퀀스를 더 큰 정수 유형으로 변환하거나 변환하는 대신 앨리어싱 트릭을 사용하지 않는 한 이식성 문제가 없어야합니다. 개인적으로, C 표준은 char항목 당 고정 보장 가능 비트 수 (8 당 unsigned char, 16 당 unsigned short또는 32 당 unsigned long)를 저장하는 짧은 유형의 시퀀스에서 정수를 압축 / 압축 풀기 위해 내장 함수를 정의해야한다고 생각합니다 .
supercat


9

많은 DSP 칩에는 16 비트 또는 32 비트가 char있습니다. TI는 일상적으로 이러한 칩 만듭니다 .


5

예를 들어, C 및 C ++ 프로그래밍 언어는 바이트를 "실행 환경의 기본 문자 세트의 멤버를 보유 할 수있을 정도로 큰 주소 지정 가능 데이터 단위"(C 표준 3.6 절)로 정의합니다. C 문자 적분 데이터 타입은 8 비트 이상을 포함해야하기 때문에 (5.2.4.2.1 절) C의 바이트는 적어도 256 개의 다른 값을 보유 할 수 있습니다. C 및 C ++의 다양한 구현은 바이트를 8, 9, 16, 32 또는 36 비트로 정의합니다.

http://en.wikipedia.org/wiki/Byte#History 에서 인용

다른 언어에 대해서는 확실하지 않습니다.

http://en.wikipedia.org/wiki/IBM_7030_Stretch#Data_Formats

해당 머신의 바이트를 가변 길이로 정의


1
"다른 언어에 대해서는 잘 모르겠습니다"-역사적으로 대부분의 언어는 머신 아키텍처가 자체 바이트 크기를 정의 할 수 있도록 허용했습니다. 실제로 역사적으로 C는 표준이 하한을 8로 설정할 때까지 C를 수행했습니다.
Windows 프로그래머

4

DEC PDP-8 제품군에는 출력에 주로 8 비트 ASCII를 사용했지만 (주로 Teletype에서) 12 비트 워드가있었습니다. 그러나 단일 12 비트 워드로 2 개의 문자를 인코딩 할 수있는 6 비트 문자 코드도있었습니다.


3

하나의 유니 코드 문자는 8 비트보다 깁니다. 앞에서 언급했듯이 C 스펙은 최소 크기로 데이터 유형을 정의합니다. 데이터 유형을 조사하고 구성 및 아키텍처에 대한 정확한 크기를 찾으려면 사용 sizeof및 값을 사용하십시오 limits.h.

이러한 이유로 uint16_t특정 비트 길이의 데이터 유형이 필요할 때 와 같은 데이터 유형을 고수하려고합니다 .

편집 : 죄송합니다. 처음에 귀하의 질문을 잘못 읽었습니다.

C 스펙은 char객체가 "실행 문자 세트의 모든 멤버를 저장할만큼 충분히 크다" 고 말합니다 . limits.h8 비트의 최소 크기를 나열하지만 정의는 최대 크기를 char열어 둡니다 .

따라서 a char는 아키텍처의 실행 세트에서 가장 큰 문자 (일반적으로 가장 가까운 8 비트 경계로 반올림)만큼 길어야합니다. 아키텍처에 더 긴 opcode가 있으면 char크기가 더 길어질 수 있습니다.

역사적으로 x86 플랫폼의 opcode는 1 바이트 길이 였으므로 char처음에는 8 비트 값이었습니다. 현재 x86 플랫폼은 1 바이트보다 긴 opcode를 지원하지만 char프로그래머 (및 많은 양의 기존 x86 코드)가 조정하는 길이이므로 8 비트 길이로 유지됩니다.

다중 플랫폼 지원에 대해 생각할 때에 정의 된 유형을 활용하십시오 stdint.h. 당신이 uint16_t (예를 들어)를 사용하는 경우, 당신은 확인이 값이 16 비트 값의 대응 여부에, 어떤 아키텍처에 부호없는 16 비트 값이라고 할 수있다 char, short, int다른, 또는 뭔가. 대부분의 어려운 작업은 이미 컴파일러 / 표준 라이브러리를 작성한 사람들이 수행했습니다.

char저수준의 하드웨어 조작이 필요하기 때문에 정확한 크기를 알아야하는 경우 일반적으로 char지원되는 모든 플랫폼 을 보유하고 (보통 16 비트이면 충분합니다) 데이터 유형을 사용 합니다. convert_to_machine_char정확한 기계 표현이 필요할 때 루틴을 통한 가치 . 그렇게하면 플랫폼 별 코드가 인터페이스 기능에 국한되며 대부분 normal을 사용할 수 있습니다 uint16_t.


2
질문은 문자에 대해 묻지 않았습니다 (유니 코드 여부에 관계없이). 그것은 바이트 인 char에 대해 물었습니다.
Windows 프로그래머

1
또한 실행 문자 세트는 opcode와 관련이 없으며 실행시 사용되는 문자 세트이며 크로스 컴파일러를 생각하십시오.
ninjalj

"역사적으로 x86 플랫폼의 opcode는 1 바이트 길이였습니다." 역사적으로 , C는 x86이 발명되기 훨씬 전 (1978) PDP-11 (1972)에서 개발되었습니다.
Martin Bonner는 Monica

3

8 비트가 아닌 문자가있는 플랫폼에는 어떤 종류의 고려가 필요합니까?

예를 들어 변속 할 때 마법 번호가 발생합니다.

이들 중 대부분은 CHAR_BIT 및 예를 들어 8 및 255 (또는 유사한) 대신 UCHAR_MAX를 사용하여 매우 간단하게 처리 할 수 ​​있습니다.

희망적으로 당신의 구현은 그것들을 정의합니다 :)

"일반적인"문제입니다 .....

또 다른 간접적 인 문제는 다음과 같습니다.

struct xyz {
   uchar baz;
   uchar blah;
   uchar buzz; 
}

이것은 하나의 플랫폼에서 24 비트 만 "만"(가장 좋은 경우) 취할 수 있지만 다른 곳에서는 72 비트가 필요할 수 있습니다.

각 uchar에 "비트 플래그"가 있고 각 uchar에 현재 사용중인 2 개의 "유의 한"비트 또는 플래그 만 있고 "명확도"를 위해 3 개의 uchar로만 구성한 경우 상대적으로 "더 낭비"가 될 수 있습니다. 24 비트 uchar가있는 플랫폼

비트 필드는 해결할 수 없지만 조심해야 할 다른 것들이 있습니다 ....

이 경우, 하나의 열거 형만으로 실제로 필요한 "가장 작은"크기의 정수를 얻을 수 있습니다.

아마도 실제 예제는 아니지만 코드를 이식 / 재생할 때이 "비트"와 같은 것들 .....

만약 uchar가 "정상적으로"예상되는 것보다 3 배 크다면, 그러한 구조는 일부 플랫폼에서 많은 메모리를 낭비 할 수 있습니다. "..." "일반적으로"큰 문제는 아닙니다 .... .

따라서 uchar가 다른 플랫폼보다 사용 가능한 RAM에 비해 한 플랫폼에서 "매우 낭비가 적지 않다"는 가정으로 인해 여전히 "손상"되거나이 경우 "많은 메모리를 매우 빠르게 낭비"할 수 있습니다. ..

예를 들어 int 또는 다른 유형의 경우 더 두드러 질 수 있습니다. 예를 들어 15 비트가 필요한 일부 구조가 있으므로 int에 고정하지만 다른 플랫폼에서는 int가 48 비트 또는 기타입니다 .... .

"일반적으로"2 uchar로 나눌 수 있지만, 예를 들어 24 비트 uchar에서는 하나만 필요합니다.

열거 형이 더 나은 "일반적인"솔루션이 될 수 있습니다 ....

그래도 비트에 액세스하는 방법에 따라 다릅니다. :)

따라서 머리를 뒤로하는 "디자인 결함"이있을 수 있습니다 ... 코드가 uchar 또는 uint의 크기에 관계없이 여전히 작동 / 실행될 수있는 경우에도 ...

코드에 "마법의 숫자"가 없더라도주의해야 할 사항이 있습니다 ...

이것이 의미가 있기를 바랍니다 :)


1
...뭐? 왜 enum다른 기본 유형보다 작을 것이라고 생각 하십니까? 기본적으로 같은 스토리지로 설정되어 int있습니까? "당신은 당신이 int 형에 대항 할 수 있도록, 15 개 비트를 필요로 어떤 구조를 가지고 있지만, 다른 플랫폼에서의 int는 48 비트 또는 무엇이든 ....."- 그렇게 #include <cstdint>하고 그것에게을 int16_t비트 사용을 최소화하는 최적의 기회 . 나는 당신이 그 모든 타원들 사이에서 무슨 말을했는지 생각하지 않습니다.
underscore_d

1

int는 16 비트 (pdp11 등)였습니다. 32 비트 아키텍처로가는 것은 어려웠습니다. 사람들은 점점 나아지고 있습니다. 어떤 사람도 포인터가 더 이상 길게 맞을 것이라고 생각하지 않습니다 (당신이 옳지 않습니까?). 또는 파일 오프셋 또는 타임 스탬프 또는 ...

8 비트 문자는 이미 다소 비동기 적입니다. 우리는 이미 모든 세계의 문자 집합을 보유하기 위해 32 비트가 필요합니다.


2
진실. 이름 char은 유니 코드 시절에 약간 기이합니다. 파일 저장, 네트워크 통신과 같은 이진 데이터를 다룰 때 8 비트 단위 (옥텟)에 대해 더 관심이 있습니다. uint8_t더 유용합니다.
Craig McQueen

3
유니 코드에는 실제로 전체 32 비트가 필요하지 않았습니다. 그들은 원래 31 (원래 UTF-8 작업 참조)을 계획했지만 이제는 21 비트 만 내용입니다 . 그들은 실제로 31 비트가 모두 필요하다면 더 이상 책을 인쇄 할 수 없다는 것을 깨달았습니다. P
me22

2
@ me22, 유니 코드는 원래 16 비트로 계획되었습니다. "유니 코드 문자는 언어에 관계없이 일관되게 16 비트 폭입니다 ..."Unicode 1.0.0. unicode.org/versions/Unicode1.0.0/ch01.pdf .
Shannon Severance

1
ISO 10646은 원래 31 비트 였고 유니 코드는 ISO 10646과 병합되었으므로 유니 코드가 31 비트라고 말하면 어색 할 수 있지만 실제로는 사실이 아닙니다. 실제로 더 이상 전체 코드 테이블을 인쇄하지는 않습니다.
개신교
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.