programing

휴대용 코드 - 문자당 비트 수

css3 2023. 10. 27. 22:07

휴대용 코드 - 문자당 비트 수

C/C++ 표준은 char당 최소 8비트만 보장하며 이론적으로는 9/16/42/다른 모든 것이 가능하며 따라서 휴대용 코드 작성에 관한 모든 사이트는 8bpc를 가정하지 말 것을 경고합니다.제 질문은 이게 얼마나 "휴대용이 아닌" 것인가 하는 것입니다.

제가 설명해 드릴게요.제가 보기에 시스템은 세 가지로 분류됩니다.

  1. 컴퓨터 - Mac/Linux/Windows/Unix/*nix/posix/무엇이든 실행하는 데스크톱, 노트북, 서버 등을 의미합니다. (목록이 정확하지는 않지만, 여러분은 이해하실 수 있습니다.)다음과 같은 시스템이 있다면 저는 매우 놀랄 것입니다.char정확히는 8비트가 아닙니다.(잘못된 경우 수정해 주십시오.)
  2. 운영 체제를 갖춘 장치 - 여기에는 스마트폰과 그와 같은 임베디드 시스템이 포함됩니다.그러나 나는 그런 시스템을 발견하는 것에 별로 놀라지 않을 것입니다.char8비트 이상입니다. 현재까지 들어본 적이 없습니다. (다시 한번, 모르는 경우 알려주세요)
  3. 베어 메탈(Bare Metal) 기기 - VCR, 전자레인지, 구형 휴대폰 등이 분야에서 저는 경험이 조금도 없어서 여기서 무슨 일이 일어날 수 있습니다.그러나 Windows 데스크톱과 전자레인지 간에 교차 플랫폼을 사용하려면 코드가 반드시 필요합니까?제가 둘 다 공통된 코드를 갖게 될 가능성이 있나요?

최종 결과:일반적인(%0.001 이상) 플랫폼(위의 범주 1 및 2에서)이 있습니까?char8비트가 아닌가요?그리고 내 위의 추측이 사실일까요?

제한을 사용합니다.h

CHAR_BIT

http://www.cplusplus.com/reference/clibrary/climits/

또한 지정된 크기를 정확하게 사용하려면 stdint.h를 사용합니다.

예를 들어, 많은 DSP들은CHAR_BIT16보다 크거나 같음.

적어도 64비트 아키텍처의 정수 크기와 유사하게 미래의 플랫폼은 더 많은 비트와 함께 더 넓은 문자를 사용할 수 있습니다.ASCII 문자가 더 이상 사용되지 않게 되어 유니코드로 대체될 수 있습니다.이것이 이유가 될 수도 있으니 주의하시기 바랍니다.

일반적으로 파일에 8비트 바이트가 있다고 가정하거나 그렇지 않은 경우 일반적으로 사용되는 도구에 의해 8비트 바이트 파일을 제로 패딩된 네이티브 형식으로 변환할 수 있습니다.하지만 CHAR_B를 가정하는 것은 훨씬 더 위험합니다.IT == 8. 현재는 거의 항상 그렇지만 미래에는 항상 그렇지 않을 수도 있습니다.메모리에 대한 8비트 액세스는 점점 더 병목 현상을 겪고 있습니다.

Posix 표준에는 CHAR_B가 필요합니다.8시가 되면.

따라서 Posix 호환 플랫폼에서 실행되는 코드만 신경 쓴다면 CHAR_B를 가정합니다.IT == 8은 괜찮고 좋습니다.

대부분의 상용 PC 플랫폼과 빌드 시스템이 이 요구 사항을 충족합니다.BSD 소켓 인터페이스를 사용하는 대부분의 플랫폼은 플랫폼 바이트가 옥텟이라는 가정이 매우 광범위하게 분포되어 있기 때문에 암묵적으로 이러한 요구 사항을 가지고 있을 가능성이 높습니다.

#if CHAR_BIT != 8
#error Your platform is unsupported!
#endif

POSIX가 CHAR_B를 의무화한 이유는 무엇입니까?IT==8?

현재 코드를 내장형 및 난해한 플랫폼에서 실행하려면 이러한 가정/제약에 대해 걱정해야 합니다.그렇지 않다면, 제가 보기에는 꽤 안전한 가정입니다.

언급URL : https://stackoverflow.com/questions/11600378/portable-code-bits-per-char