int8_t, int_least8_t 및 int_fast8_t의 차이점은 무엇입니까?
무엇 INT 유형 사이의 차이는 int8_t
, int_least8_t
그리고 int_fast8_t
?
차이는 Carl Norum이 인용 한 C99 표준의 섹션에서 정의됩니다. 그러나 예가 있으면 유용 할 수 있습니다.
char
= 9 비트, short
= 18 비트, int
= 36 비트 및 long
= 72 비트 의 36 비트 시스템 용 C 컴파일러가 있다고 가정하십시오 . 그때
int8_t
패딩없이 정확히 8 개의 값 비트를 갖는 제약 조건을 충족시킬 방법이 없기 때문에 존재하지 않습니다 .int_least8_t
의 typedef입니다char
.short
또는의 아님int
. 표준에는 최소 8 비트 의 가장 작은 유형이 필요하기 때문 입니다.int_fast8_t
무엇이든 될 수 있습니다.int
"기본"크기가 "빠른"것으로 간주되는 경우 typedef 일 가능성이 높습니다 .
사양 섹션 7.8.1.1 정확한 너비 정수 유형 , 단락 1 :
typedef 이름 N 은 너비 N, 패딩 비트 없음 및 2의 보수 표현을 갖는 부호있는 정수 유형을 지정합니다. 따라서 너비가 정확히 8 비트 인 부호있는 정수 유형을 나타냅니다.
int
_t
int8_t
그리고 from : 7.18.1.2 최소 너비 정수 유형 , 단락 1 :
typedef 이름 N 은 너비가 N 이상인 부호있는 정수 유형을 지정하므로 크기가 더 작은 부호있는 정수 유형은 최소한 지정된 너비를 갖지 않습니다. 따라서 너비가 32 비트 이상인 부호있는 정수 유형을 나타냅니다.
int_least
_t
int_least32_t
마지막으로 7.18.1.3에서 가장 빠른 최소 너비 정수 유형 , 단락 2 :
typedef 이름 N 은 너비가 N 이상인 가장 빠른 부호있는 정수 유형을 지정합니다 . typedef 이름 N 은 너비가 N 이상인 가장 빠른 부호없는 정수 유형을 지정합니다.
int_fast
_t
uint_fast
_t
intN_t
(및 uintN_t
) 모든 C99 구현에서 필수 는 아닙니다 . 이러한 유형은 "정확한 너비 정수 유형"입니다. 그것들을 가지고있는 것이 합리적 일 경우 (기본적으로 모든 데스크톱 컴퓨터) 구현에 필요합니다.
int_leastN_t
8, 16, 32 및 64의 N 값에 대해 모든 C99 구현에 필요합니다. 이것이 "최소 너비 정수 유형"입니다.
int_fastN_t
8, 16, 32 및 64의 N 값에 대해 모든 C99 구현에 필요합니다. 이것은 "가장 빠른 최소 너비 정수 유형"입니다.
여기 개념적 간단한 응답의 모든 세 가지 유형의 INT * N_t의 폭> = N. intN_t을 가지고 있어야 정확하게 int_leastN_t는이고, N 비트를 상기 (좁은) 그러한 종류 및 int_fastN_t는이고 빠른 이러한 유형.
예를 들어, 8 비트 바이트 및 32 비트 고속 레지스터가있는 시스템에서 int8_t 및 int_least8_t는 부호있는 char로 별칭이 지정되지만 int_fast8_t는 int32_t로 별칭이 지정됩니다. 반면 구현에서 정의하기로 선택한 경우 int_least24_t 및 int_fast24_t는 모두 int32_t로 별칭이 지정되고 int24_t는 정의되지 않은 상태로 유지됩니다.
편집 : Technophile가 아래에서 지적했듯이 빠른 유형의 실제 문제는 레지스터가 아니라 메모리입니다 (일반적으로 레지스터의 하위 비트에 대한 작업은 전체 레지스터 에서처럼 빠르게 수행 될 수 있음). 예를 들어, 메모리에있는 int8_t에 쓰려면 그것을 포함하는 32 비트 워드를로드하고, 바이트 만 수정 한 다음 다시 쓰는 것이 필요할 수 있지만, 32 워드로 저장된 경우 읽지 않고 쓸 수 있습니다.
이것들은 정수의 크기와 관련이 있으며 소리가 나는 것과 같습니다.
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
'program story' 카테고리의 다른 글
Pandas에서 이름별로 열을 테이블 앞으로 이동 (0) | 2020.12.27 |
---|---|
PHP에서 숫자와 같은 문자를 증가시키는 방법은 무엇입니까? (0) | 2020.12.27 |
C ++ 11의 유니 코드 (0) | 2020.12.26 |
java.lang.RuntimeException : java.lang.IllegalArgumentException으로 활동을 재개 할 수 없습니다. (0) | 2020.12.26 |
Resharper 대 Coderush-2010 리메이크 (0) | 2020.12.26 |