상세 컨텐츠

본문 제목

[CS기초] [C언어] 비트(bit)와 정수 표현

개발기록/CS 기초

by 도리(Dory) 2025. 11. 27. 11:51

본문

컴퓨터를 이해하려면, 일단 이걸 가장 먼저 알아야하지 않나 싶다.

 

 

 

컴퓨터는 0, 1 만 알아들을 수 있다.

 

진짜 이게 신기하긴하다. 우리가 컴퓨터로 하는 그 모든 것들은 사실 0과 1로 이루어진 정보들, 즉 기계어로 번역이 되고, 컴퓨터는 이걸 읽어서 일을 진행시키는것이다.

 

 

 

켤건지(1) 끌건지(0)에 따라서 정보 한 칸이 결정이 되고, 이 한 칸을 비트(bit)라고 한다.

1bit는 정보의 최소 단위이다.

 

그리고, 1bit가 8개 모여서 8bit 즉, 1byte가 된다.

 

8bit = 1byte

 

byte

 

 

1bit를 보면 0 or 1 의 2가지 정보를 표현할 수 있다.

 

그럼 2bit는??

 

0 0

0 1

1 0

1 1

 

첫번째 칸(2가지) x 두번째 칸(2가지) = 4가지를 표현할 수 있다.

 

그럼 1byte는?

 

2^8 = 256가지를 표현할 수 있다.

 

 

자 이제 정보 단위를 마스터했다. .

 

 

 

 

그리고 이제는 숫자를 기계어로 표현하는 법을 알아볼 것이다.

숫자라도.. 이해해보자!!!!

 

 

 

일단 숫자에는 정수실수가 있다.

 

 

수의 체계

 

일반적으로 C언어에서 정수를 표현할 때는 Int라는 자료형을 사용한다.

Int는 4byte의 정보까지 표현할 수 있다.

 

4byte는 32bit 이므로 2^32 = 4,294,967,296 가지의 정보를 표현할 수 있다! 무려 42억가지!!!

 

우리는 이 정보 가지 수 하나하나에 정수 하나하나를 표현하고 싶으니까

 

부호가 없는 정수(unsigned)라면 0 부터 4,294,967,295 까지

부호가 있는 정수(signed) 라면 반으로 나눠서 -2,147,438,648 부터 2,147,438,647 까지 표현할 수 있다!

 

예를 들어, 정수 13을 컴퓨터가 이해할 수 있도록 변형하려면,

 

Int 자료형을 만들고(4byte 짜리 정보 꾸러미)

그 자료형 안에서 13을 0과 1로 나타내면 된다.

 

13을 0과 1로 나타내는 방법은!!??

-> 아무래도 2진법을 사용하면 된다.

 

 

2진법

 

일단 우리는 0부터 9의 숫자를 사용하는 십진법에 가장 익숙하다.

 

0, 1, 2, 3, 4, 5, 6, 7, 8, 9 까지 셌으면 자리를 하나 더 만들어서 10 이라고 표현하는 것이다.

 

이것처럼 2진법도

1 다음 2라고 표현하지 않고 10이라고 표현한다.

 

 

 

이것처럼 13을 2진수로 표현하면

8의 자리 ---- 1

4의 자리 ---- 1

2의 자리 ---- 0

1의 자리 ---- 1

 

으로 1101이 된다.

 

그럼 이걸 위에 만들어둔 int 자료형에 넣으면!!

 

00000000  |  00000000  |  00000000  |  00001101 

 

이렇게 된다.

 

이걸 컴퓨터한테 보여주면 

드디어 우리가 아는 13으로 이해해준다!

관련글 더보기