'2진수'에 해당되는 글 1건

프로그래밍, C언어를 처음 접하시는 분들을위해 강좌를 작성해 볼까 합니다.


처음 프로그래밍을 접하시는 분들은 처음부터 변수가 무엇이고 자료형이 무엇인지 몰라 난해한 경우가 있지요. C언어 기초 포스팅은 프로그래밍을 처음 접하는 공대생, 또한 기초부터 배우시는 분을 위하여 작성해 봅니다.


기초 지식

먼저 기초 지식부터 알아봅시다.

우리가 소스코드를 작성하여 이를 실행시키는 컴퓨터는 기계입니다.
기계들을 기본적으로 우리가 명령을 처리하는것을 전기가 통하는 상태, 전기가 통하지 않는 상태로 모든것을 판단합니다.

우리가 거실이나, 방의 불을 키고 끄는 스위치와 같은 원리이죠.

스위치가 꺼져있다는 0 (거짓-false)로 판단할 수 있고,
스위치가 켜져있다는 1 (참 -true)로 판단할 수 있습니다.

이처럼 컴퓨터는 0과 1로 이루어진 데이터를 처리하며 이는 데이터 처리의 최소 단위인 Bit(비트) 라고 부릅니다. 우리가 외장하드, 혹은 컴퓨터의 하드 디스크는 위와 같은 단위를 사용하여 저장하죠? 1테라, 혹은 512기가 바이트의 용량의 디스크 크기를 가집니다.

위에서 말했듯, Bit는 컴퓨터의 데이터 처리의 최소 단위입니다.
이와 같은 비트 8개를 모아서 0000 0001Bit(비트)가 8개가 모이면 Byte(바이트) 라고 부릅니다.

정리하자면

8비트 = 1바이트로 정의할 수 있습니다.

따라서 8 Byte(바이트)는 32비트가 되며, 16 Byte는 16 * 8인 128비트가 되는것이죠.
이보다 더 큰 단위로는 킬로바이트(Kilo Byte), 메가바이트(Mega Byte), 기가바이트(Giga Byte) 등 이 있으며 아래와 같이 표현합니다.

1 KB(킬로바이트) = 1024 Byte(바이트)
1 MB(메가바이트) = 1024 KB(킬로바이트)
1 GB(기가바이트) = 1024 MB(메가 바이트)

이런 식으로 표현할 수 있으며 굳이 1000이 아닌 1024는 아래에서 설명하겠습니다.

2진수란?

위에서 설명한 0, 1로 이루어진 비트는 컴퓨터에서 사용하는 최소 단위라고 하였죠.
다시 말하면 0, 1외의 다른 수는 그대로 처리하지 못한다는 말로 바꿔 말할 수 있습니다.

따라서 컴퓨터는 2진수를 사용합니다.


 10진수

2진수 

 0

 0000

 1

 0001

 2

 0010

 3

 0011

 4

 0100

 5

 0101

 6

 0110



위와 같이우리가 일상적으로 사용하는 단위는 10진수로 표현하지만,

컴퓨터는 2진수를 사용하기 때문에 숫자들을 위와 같이 표기합니다.


이런식으로 4비트 안에는 0~15까지의 숫자를 표현할 수 있습니다.

수학공식으로 표현하면 다음과 같이 표현 할 수 있습니다.

최대 숫자 =  2ⁿ - 1 (n은 비트수)

여기서 16 이상의 숫자를 표현하려면 어떻게 하죠? 하시는 분들을 위해 덧붙여 설명드리자면 4비트에서 표현할 수 있는 숫자의 한계는 2^4 - 1 = 15 이죠

고로 8비트로 표현한답니다!
16이라고 하면 
0001 0000 이렇게 되는것이죠.
또한 위 수식에서 -1을 해주는 이유는 1부터 시작이 아닌 0부터 시작하므로 -1을 빼는 것입니다.

위에서 킬로바이트, 메가바이트, 기가바이트가 1000이 아닌 1024를 사용하는 이유도 2를 제곱해 나가면서 1000에 제일 가까운 수가 1024이므로 1024로 사용하는 것입니다.

2진수를 사용하면서 큰 수를 처리할때는 굉장히 길어지게 될겁니다.

예를 들어볼까요?

2,654,147,491이란 숫자를 2진수로 표현하면


1001 1110 0011 0011 0001 0011 1010 0011


위와 같이 표현되어 보기에도 불편할 뿐더러, 계산하기도 버겁지요.

이를 위해 16진수가 만들어지고 사용합니다.

 10진수

 2진수

 16진수

 0

 0000

 0 

 1

 0001

 1

 2

 0010

 2

 3

 0011

 3

 4

 0100

 4

 5

 0101

 5

 6

 0110

 6

 7

 0111

 7

 8

 1000

 8

 9

 1001

 9

 10

 1010

 A

 11

 1011

 B

 12

 1100

 C

 13

 1101

 D

 14

 1110

 E

 15

 1111

 F


위 2진수를 4자리씩 끊어서 표현한 이유도 16진수를 설명하기 위함이였습니다.


위 숫자를 다시 16진수로 표현하게 되면


2,654,147,491

 = 1001 1110 0011 0011 0001 0011 1010 0011 (2진수)

 =  9E3313A3 (16진수)


이처럼 보기 편하게 표현할 수 있습니다.
2진수 4자리 만큼을 16진수 한자리로 표현이 가능하며, 즉 4비트를 한자리로 표현할 수 있습니다. C언어를 비롯하여 프로그래밍 언어들은 2진수보다는 16진수를 더 많이 사용하기 때문에 참고하시면 좋을것 같습니다.

글 잘 보셨으면 아래 공감버튼 한번씩만 눌러주세요!
포스팅에 큰 힘이 됩니다!

블로그 이미지

덕배님

5년차 S/W 개발자입니다. Android, Unity, JAVA, C, C++, C# 정보를 공유합니다

,