uint_fast32_t는 무엇이며 일반 int 및 uint32_t 대신 사용해야 하는 이유는 무엇입니까?
그래서 그 이유는typedef
:ed 원시 데이터 유형은 낮은 수준의 표현을 추상화하여 이해하기 쉽게 하는 것입니다.uint64_t
대신long long
8 바이트)를 지정합니다.
단, 있습니다.uint_fast32_t
같은 것을 가지고 있다typedef
~하듯이uint32_t
. "빠른" 버전을 사용하면 프로그램이 더 빨라집니까?
int
플랫폼에 따라서는 16비트까지 작을 수 있습니다.당신의 지원에는 충분하지 않을 수 있습니다.uint32_t
가 존재한다고는 보증되지 않습니다.옵션입니다.typedef
32비트의 부호 없는 정수 타입을 가진 경우 구현에서 제공해야 합니다.예를 들어 9비트의 바이트를 가진 것도 있기 때문에uint32_t
.uint_fast32_t
의향을 명확하게 나타냅니다.최소 32비트의 타입으로 퍼포먼스의 관점에서 최적인 것입니다.uint_fast32_t
실제로는 64비트 길이일 수 있습니다.구현에 달려 있습니다.
...있어
uint_fast32_t
typedef와 같은 typedef를 가지고 있습니다.uint32_t
...
당신이 보고 있는 것은 표준이 아닙니다.특정 구현(BlackBerry)입니다.그래서 당신은 거기서 추론할 수 없다.uint_fast32_t
항상 똑같다uint32_t
.
다음 항목도 참조하십시오.
표준위원회가 신경 쓰는 이국적인 건축.
차이점은 정확성과 가용성에 있습니다.
여기 의사 선생님 말씀:
각각 정확히 8, 16, 32 및 64비트 너비의 부호 없는 정수형(실장이 해당 유형을 직접 지원하는 경우에만 제공):
uint8_t uint16_t uint32_t uint64_t
그리고.
각각 최소 8, 16, 32 및 64비트의 너비를 가진 가장 빠른 부호 없는 정수형
uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
그래서 그 차이는 거의 명백하다.uint32_t
이 타입은 정확하게 32
bits, 그리고 실장에서는 32비트의 타입을 가지고 있고, 그 타입을 다음과 같이 정의할 수 있는 경우에만 그 타입을 제공해야 합니다.uint32_t
그러니까...uint32_t
를 사용할 수도 있고 사용할 수도 없습니다.
반면에,uint_fast32_t
최소 32비트를 가진 타입입니다.즉, 구현이 typedef를 지정할 수 있습니다.uint32_t
~하듯이uint_fast32_t
그것이 제공된다면uint32_t
제공이 되지 않는 경우uint32_t
,그리고나서uint_fast32_t
적어도 다음을 포함하는 타입의 typedef일 수 있습니다.32
비트를 클릭합니다.
패스트 버전은 32비트보다 클 수 있습니다.fast int는 레지스터에 잘 맞고 정렬도 되지만 메모리를 더 많이 사용합니다.이러한 어레이가 큰 경우 메모리 캐시 적중과 대역폭이 증가하므로 프로그램 속도가 느려집니다.
일반적으로 로드 명령 중에 32~64비트의 부호가 확장될 수 있고 더 빠른 '네이티브' 정수 형식이 있다는 생각은 구식이기 때문에 최신 CPU는 fast_int32의 혜택을 받지 못할 것이라고 생각합니다.
언제#include inttypes.h
프로그램에서 정수를 표현하는 다양한 방법을 사용할 수 있습니다.
uint_fast*_t 타입은 단순히 특정 비트수를 나타내는 가장 빠른 타입을 정의합니다.
이렇게 생각해 보세요.유형의 변수를 정의합니다.short
프로그램에서 여러 번 사용하는 것은 완전히 유효합니다.다만, 사용하고 있는 시스템은, 타입의 값으로 동작하는 것이 고속인 경우가 있습니다.int
변수를 유형으로 정의함으로써uint_fast*t
컴퓨터는 단순히 사용할 수 있는 가장 효율적인 표현을 선택한다.
이러한 표현 사이에 차이가 없는 경우 시스템은 원하는 표현 중 하나를 선택하여 지속적으로 사용합니다.
언급URL : https://stackoverflow.com/questions/8500677/what-is-uint-fast32-t-and-why-should-it-be-used-instead-of-the-regular-int-and-u
'source' 카테고리의 다른 글
C에서 1123456789에서 1,123,456,789까지의 숫자를 포맷하려면 어떻게 해야 합니까? (0) | 2022.07.17 |
---|---|
nuxt.js Vuex Vuejs 정의되지 않은 속성 'getters'를 읽을 수 없습니다. (0) | 2022.07.17 |
오류: 유감스럽게도 비 Gradle Java 모듈과 > Android-Gradle 모듈을 하나의 프로젝트에 포함할 수 없습니다. (0) | 2022.07.17 |
pthread_cond_wait 대 세마포 (0) | 2022.07.17 |
번들러 없이 Vue를 사용하시겠습니까? (0) | 2022.07.17 |