C Language [핵심정리] - 8
1. Boolean 자료형 사용하기
Boolean 자료형은 논리 자료형이라고 불리며 참과 거짓을 나타냅니다. 다만, C언어에선 Boolean 자료형이 없어 거짓을 0으로 참을 0이 아닌 정수로 표현합니다. 그래서 우리는 <stdbool.h>파일을 이용해 true를 참으로, false를 거짓으로 나타낼 수 있습니다.


결과를 통해 Boolean 자료형은 1byte로 그전까지 참, 거짓을 구분할 때 사용했던 int 자료형과는 크기가 다름을 알 수 있습니다. 그리고 printf 함수로 결과를 출력할 때는 %d 서식지정자를 사용합니다.(따로 정의된 전용 서식지정자는 없습니다.)
2. 비트 연산자 사용하기
지금까지는 자료형을 구분할 때 byte 단위로 구분해 사용했습니다. 비트 연산자는 byte 단위보다 더 작은 bit 단위로 연산하는 연산자입니다. 하... bit 단위라니... 벌써 까마득하네요... 일단 bit 와 byte의 개념에 대해 먼저 설명드리겠습니다.
• 비트(bit) : 2진수를 저장하는 단위입니다. 컴퓨터에서 사용할 수 있는 최소 단위이며, 0과 1을 나타냅니다.
• 바이트(byte) : 8bit 크기의 단위입니다.

비트 연산은 두 값을 비트 단위로 나열한 뒤 각 자릿수를 비트 연산자로 연산합니다. 각 자릿수의 연산은 독립적이기에 다른 자릿수에 영향을 주지 못합니다. 그리고 비트 단위로 연산한 각 자릿수를 모두 모아 최종결과를 나타냅니다. 그리고 우측의 진리표는 내용이 많아보여도 각 연산자의 특성을 이해하면 모두 암기하지 않아도 사용할 수 있습니다.
비트 연산자는 비트로 옵션을 설정할 때 주로 사용하며 저장 공간을 아낄 수 있습니다. 이런 방식을 Flag라고 부릅니다.


시프트 연산은 [변수 << 이동 할 비트 수] 형식으로 사용합니다. 즉, 지정한 횟수대로 비트를 이동시키며 모자란 공간은 0으로 대체합니다. 연산자는 모양 그대로 << 는 왼쪽, >>이 오른 쪽입니다. 만약 이런 비트 연산자와 할당 연산자(=)를 같이 사용한다면 해당 비트 연산을 수행한 후 다시 자신에게 할당한다는 의미입니다. (그럼 기존에 저장되어 있던 값이 사라지고 새로운 값이 저장되겠죠.)
+ 비트 연산자 응용하기
시프트 연산자는 2의 거듭제곱을 구할 때 유용합니다.
사실 2의 거듭제곱을 구할 일이 있을까 싶지만.. 알아두어서 나쁠 건 없으니까요.


왼쪽으로 한번 씩 이동할 때마다 2의 거듭제곱으로 수가 늘어납니다. 즉, 비트의 각 자릿수는 2의 거듭제곱을 뜻하므로 비트의 이동횟수는 지수(exponent)에 해당한다고 볼 수 있습니다.