컴퓨터가 정수를 어떻게 표현하는지 알아보겠습니다. 그 전에 비트와 바이트에 대해 공부해봅시다.
비트와 바이트
컴퓨터에서 자료를 저장 가장 작은 단위가 비트(bit) 입니다. 0 또는 1이라는 이진수 값을 저장합니다. Binary Digit 을 줄여서 bit라고 부릅니다.
비트가 8개 모인 것을 바이트(Byte)라고 합니다.
C언어에서 하나의 정수를 표현할 때는 4 바이트를 사용합니다. 정수의 표현에서 왜 비트와 바이트를 먼저 이야기했는지 아시겠죠?
int는 몇비트일까
우리는 정수인 변수를 만들 때, int 라는 코드를 앞에 붙여주었습니다. int 자료형인 변수가 가질 수 있는 메모리 크기가 4바이트이고, 비트로 환산하면 32비트입니다.
32비트는 2^32개의 표현이 가능합니다. 계산하면 4,294,967,296 개입니다.
음수 표현
정수는 양의정수도 있고 음의정수도 있습니다. 부호를 어떻게 표현해야할까요? 가장 쉽게 할 수 있는 생각은 맨 앞자리를 부호비트로 두는 것입니다. 맨 앞자리 부호에서 0을 양수, 1을 음수라고 합시다.
이해를 돕기 위해 4바이트에서 이해해봅시다. 4바이트는 아래와 같이 네자리 이진수입니다.
OOOO
3과 -3을 표현하면 아래와 같습니다.
0011
1011
두 값을 더하면 0이 나와야 합니다. 한번 더해봅시다.
1110
-6이 나옵니다. 위와 같은 부호표현방법으로는 정상적인 연산이 불가능합니다.
2의 보수법
2의 보수법은 양수의 보수를 취한 뒤 1을 더해 음수를 만드는 방법입니다.자세한 원리는 생략하겠습니다. 위 예시에 적용해봅시다.
0011 의 보수를 취하면 1100이 됩니다. 1을 더하면 1101이 됩니다. 1101이 -3입니다.
0011과 1101을 더해봅시다.
0011
1101
10000 이 되는데 전체가 4비트이므로 0000입니다. 0이 나옵니다.
'C언어 > 자료형 (숫자,논리,문자)' 카테고리의 다른 글
[C언어] int 변수를 char 로 바꾸면 벌어지는 일 (0) | 2022.03.03 |
---|---|
[C언어] 문자와 문자열 (0) | 2022.03.02 |
[C언어] 문자 자료형과 아스키코드 (0) | 2022.03.02 |
[C언어] 정수 자료형의 종류와 출력형식 (0) | 2022.02.28 |
[C언어] 자료형의 종류 (0) | 2022.02.24 |
댓글