왜 C에서 int
는 최소 16비트일까?
업데이트:
C89 표준에서는 int
기본 자료형이
short
형보다 크고, 최소 16비트 이상인 자료형
으로 명시되어있다. 다른 대부분의 언어는 4바이트인데 왜 그럴까?
int
: 그냥 정수라는 의미- CPU에게 ‘정수 처리해!’ 명령하면 CPU가 딱 아는 크기여야 한다.
- 그게 무슨 크기?
- CPU 의 ALU (Arithmetic Logic Unit) 가 사용하는 기본 데이터
- 이 데이터를 word라고 하고, 크기를 워드 크기라고 한다.
- 워드 크기는 레지스터 크기와 일치한다!
즉, int
자료형의 크기는 CPU에 따라 달라질 수 있으므로 표준에서는 저렇게 명시한 것이다.
더해서, 과거에는 16비트 CPU가 흔했기에 최소 16비트로 명시해두었다.
64비트 플랫폼
이후에 32비트 컴퓨터가 나오면서 int
는 32비트가 됨
65비트 컴퓨터인데? 그래도 32비트로 유지됨 왜?
- 원칙적으로 C표준을 어긴 것
- 32비트에서 64비트로 바꾼다고 성능이 무조건 빨라지는것도 아님 (캐시 메모리 등의 이유)
- 이전까지 int가 32비트로 작성된 프로그램이 너무 많음
참고
POCU 강의 “C 언매니지드 프로그래밍”
댓글남기기