본문 바로가기
C언어/자료형 (숫자,논리,문자)

[C언어] 정수의 표현 (비트와 바이트)

by bigpicture 2022. 2. 28.
반응형

컴퓨터가 정수를 어떻게 표현하는지 알아보겠습니다. 그 전에 비트와 바이트에 대해 공부해봅시다.

 

비트와 바이트

컴퓨터에서 자료를 저장 가장 작은 단위가 비트(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이 나옵니다. 

반응형

댓글