programing

int8_t, int_least8_t 및 int_fast8_t의 차이는 무엇입니까?

randomtip 2022. 8. 30. 21:44
반응형

int8_t, int_least8_t 및 int_fast8_t의 차이는 무엇입니까?

int 타입의 차이점은 무엇입니까?int8_t,int_least8_t그리고.int_fast8_t?

그 차이는 Carl Norum이 인용한 C99 표준의 섹션에 정의되어 있다.하지만 예를 들면 유용할 수 있다.

36비트 시스템용 C 컴파일러가 있다고 가정합니다.char= 9비트,short= 18비트,int= 36비트 및long= 72비트그리고나서

  • int8_t 는 존재하지 않습니다.이는 패딩 없이 정확히8개의 값 비트를 갖는다는 제약조건을 만족시키는 방법이 없기 때문입니다.
  • int_least8_t의 유형 정의입니다.char~가 아닙니다.short또는int표준에서는 최소 8비트의 최소 타입이 필요하기 때문입니다.
  • int_fast8_t무엇이든 될 수 있다.그것은 아마도 의 타이프 기술일 것이다.int"최신" 크기가 "빠른" 것으로 간주되는 경우.

여기는 개념적으로 단순한 답:int*N_t 세가지 유형의 모든의 폭 &gt야 한다.)NintN_t다 정확히 N비트, int_leastN_t은 가장 덜( 좁은)그런 타입, 그리고 int_fast 있다.N_t는 가장 빠른 그런 타입.

예를 들어, 8비트 바이트와 32비트 빠른 등록 작업을 수행하고int_least8_tint8_t과 기계에 서명한 까맣게 되지만 int_fast8_t int32_t에 앨리어스는 앨리어스고 있다.반면에, 구현 그들을 정의하는 int_least24_t과 int_fast24_t 둘 다int24_t 남아 한정되지 않은과 int32_t에 aliased 것을 선택했다.

Edit:Technophile 아래 지적한 빠른 형식에 대한 실제적인 문제는 기억이 아니라 등록(일반적으로, 레지스터의low-order 비트에 대한 작업 만큼 빠른 전체 레지스터에서 할 수 있).예를 들어, 기리는 int8_t 위해 쓰고 32비트 단어가 들어 있는 적재할 경우32-word에서 보관되었다 반면에 읽지 않고 쓸 수 있고, 그리고 나서 다시 그것을 쓰는, 바이트 수정 요구할 수 있다.

intN_t라고uintN_t)은, 모든 C99 실장에서는 필수는 아닙니다.이러한 유형은 "정확한 너비 정수 유형"입니다.필요한 것은, 필요한 실장(기본적으로 모든 데스크탑 컴퓨터)입니다.

int_leastN_t모든 99구현에 N8,16,32및 64의 값에 필요합니다.이것은"minimum-width 정수 형식".

int_fastN_t모든 99구현에 N8,16,32및 64의 값에 필요합니다.이것은" 빠른 minimum-width 정수 형식".

규격 섹션 7.8.1.1 정확한 정수형 항목 1에서:

typedef name_t N은 너비 N, 패딩 비트 없음 및 2의 보어 표현으로 부호 있는 정수 유형을 지정합니다.따라서, 는 정확히 8비트의 폭을 갖는 부호 있는 정수형을 나타냅니다.

발신인: 7.18.1.2 최소폭 정수형, 제1항:

typedef명 N_t 폭이 N 이상인 부호 있는 정수형을 지정하기 때문에 크기가 작은 부호 있는 정수형이 적어도 지정된 폭을 가지지 않도록 합니다.따라서, 는 폭이 32비트 이상인 부호 있는 정수형을 나타냅니다.

그리고 마지막으로 7.18.1.3 가장 빠른 최소 폭 정수 유형, 단락 2:

typedef 이름_t N은 너비가 N 이상인 가장 빠른 부호 있는 정수 유형을 나타냅니다.typedef 이름_t N은 너비가 N 이상인 가장 빠른 부호 없는 정수 유형을 나타냅니다.

이는 정수의 크기와 관련이 있으며 소리 그대로입니다.

int8_t is exactly 8 bits
int_least8_t is the smallest int type that has at least 8 bits
int_fast8_t is the fastest int type that has at least 8 bits.

언급URL : https://stackoverflow.com/questions/5254051/the-difference-of-int8-t-int-least8-t-and-int-fast8-t

반응형