더북(TheBook)

값이 1인 bi 비트 중 인덱스 i가 가장 작은 것을 최하위 설정 비트(least-significant bit set)C라 하고, 인덱스 i가 가장 큰 것을 최상위 설정 비트(most-significant bit set)C라 한다. 예를 들어 p = 16인 부호 없는 타입의 값 240에 대한 바이너리 표현은 b4 = 1, b5 = 1, b6 = 1, b7 = 1이고 나머지 비트는 0이다. 이때 최하위 설정 비트는 b4고, 최상위 설정 비트는 b7이다. 식 (5.1)에 따르면 이 타입에서 표현할 수 없는 값 중 첫 번째는 2p임을 쉽게 알 수 있다. 따라서 N = 2p이다.

TAKEAWAY 5.51 모든 정수 타입의 최댓값은 2p 1이다.

지금까지 음이 아닌 값을 표현하는 방법을 설명하면서 부호 있는 타입과 그렇지 않은 타입을 구분하지 않았다. 방금 설명한 규칙은 부호 있는 타입과 부호 없는 타입 모두에 적용된다. 다행히 지금까지 설명한 사항은 부호 없는 타입을 표현하는 데 문제가 없다.

TAKEAWAY 5.52 부호 없는 타입에 대한 산술 연산은 정밀도에 영향을 받는다.

마지막으로 이 책에서 자주 사용하는 스칼라 타입의 경계값을 정리하면 표 5-5와 같다.

▼ 표 5-5 이 책에서 사용하는 스칼라 타입의 경계값

이름

[min, max]

정의된 곳

주요 범위

size_t

[0, SIZE_MAX]

<stdint.h>

[0, 2w-1], w=32, 64

double

DBL_MIN, ±DBL_MAX]

<float.h>

[±2-w-2,±2w], w=1024

signed

[INT_MIN, INT_MAX]

<limits.h>

[-2w,2w-1], w=31

unsigned

[0, UINT_MAX]

<limits.h>

[0,2w-1], w=32

bool

[false, true]

<stdbool.h>

[0,1]

ptrdiff_t

[PTRDIFF_MIN, PTRDIFF_MAX]

<stdint.h>

[-2w,2w-1], w=31, 63

char

[CHAR_MIN, CHAR_MAX]

<limits.h>

[0,2w-1], w=7, 8

unsigned char

[0, UCHAR_MAX]

<limits.h>

[0,255]

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.