문득 C언어에서 사용하는 bool 자료형은 True/False로만 사용하기 때문에 1Bit면 될 것 같은데 자료형 크기가 왜 1Byte인지 궁금해져서 찾아보니 아래와 같은 이유로 1Byte를 사용한다고 한다.
#1 메모리 접근 효율성
대부분의 하드웨어에서 메모리는 바이트 단위로 접근된다. 즉, 메모리에서 최소 접근 단위가 1Byte이기 때문에, 1Bit 자료형을 사용하면 성능 저하가 발생할 수 있다. CPU가 메모리에 접근할 때 바이트 단위로 접근하기 때문에 1Bit 자료형을 사용할 경우에도 실제로는 1바이트를 사용하게 된다.
#2 주소 지정 가능성
C 언어에서는 각각의 변수에 주소가 할당된다. 주소를 할당하려면 해당 변수는 메모리의 특정 위치를 차지해야 한다. 메모리 주소는 바이트 단위로 할당되기 때문에 1Bit 자료형을 메모리에서 직접 참조하는 것이 어렵다.
#3 CPU 아키텍처
대부분의 CPU는 메모리 접근 및 연산을 바이트(혹은 그 이상의 단위) 단위로 처리한다. 1Bit 단위로 처리하려면 추가적인 비트 조작이 필요하게 되며, 이는 성능 저하를 유발할 수 있다. 그래서 bool 자료형도 1Byte 크기로 처리하는 것이 더 효율적이다.
#4 언어의 설계 및 호환성
C 언어는 하드웨어와 밀접하게 연관된 언어로, 다양한 아키텍처와 호환성을 유지하기 위해 설계되었다. 각 아키텍처에서 가장 효율적인 메모리 접근을 고려한 설계가 필요했으며, 이러한 이유로 bool 자료형이 1Byte로 정의된 것이다.
정리하자면, C 언어에서 bool 자료형이 1바이트인 이유는 메모리 접근 효율성, 주소 지정의 가능성, CPU 아키텍처와의 호환성 등의 이유로 1Byte로 정의된 것이다.