CS

데이터 - 0과 1로 숫자를 표기하는 방법

kark 2024. 6. 24. 17:28
728x90

컴퓨터는 0과 1로만 모든 데이터를 표기한다 라는 얘기를 많이 들어봤을것이다.

컴퓨터는 이진수 체계를 사용해 데이터를 표기하며 각각의 비트는 두 가지 상태 중 하나를 가진다.

 

컴퓨터가 이진수를 사용하는 방법은 전기 신호를 사용하여 표현하게 되는데

일반적으로는 전압이 높은상태는 1을 표현하며 반대로 전압이 낮은상태는 0을 표현하게 된다.

 

그럼 0과 1로만 어떻게 3, 7 같은 1보다 큰수를 표현할 수 있을까?

1비트는 이진수의 한자리 숫자, 0 이나 1 로 구성된 한자리 숫자로 가장 작은 데이터 단위이다.

1비트의 경우 0 이나 1로 두가지 표현이 가능하다.

 

만약 2비트의 경우 00, 01, 10, 11 총 4개의 표현이 가능하며

3비트의 경우 8개, 4비트의 경우 16개 와 같은 등비 수열의 표현수를 갖게된다.

 

비트(bit)란?

컴퓨터에서 가장 기본이 되는 개념으로, 데이터를 표현하고 처리하는 데 사용된다.

여러개의 비트로 숫자, 문자, 이미지, 음성 등 다양한 데이터를 표현하고,

컴퓨터의 처리 속도, 용량, 통신 속도를 결정하는 중요한 요소다.

 

데이터 단위를 표기하는 방법은 두 가지로 표현할 수 있다.

SI 단위계 기반(1000단위) 이진 기반 단위(1024단위)
8bit = 1byte 8bit = 1byte
1000byte = 1kB 1024byte = 1kiB
1000kB = 1MB 1024kiB = 1MiB
1000MB = 1GB 1024MiB = 1GiB
1000GB = 1TB 1024GiB = 1TiB

 

 

24GiB는 오차범위는 좀 큰차이 아닌가?

큰차이다.

일반인 기준으로 숫자는 항상 십진법을 사용하기때문에 사람에게는 SI 단위를 사용하며

컴퓨터 기준으로는 항상 이진법을 사용하기에 이진 기반 단위를 사용한다.

 

이것을 활용한 광고들을 사례들로는 인터넷속도, 제품의 용량 크기가 있겠다.

 

나는 분명 1TB의 SSD를 구매했었다. 근데 이게 왠걸

930..?? 나머지 70GB는 어딨지??

 

속성으로 자세히 살펴보면 대략 1,000,000,000,000 바이트 SI 단위 1TB에 근사하다

판매자는 나에게 SI단위로 1,000,000,000,000 바이트의 공간을 준것은 맞지만

컴퓨터에서는 이 수치를 이진법인 1024 단위로 측정하기에 930의 용량으로 표기하게 된다.

 

판매광고가 930GiB 혹은 920GiB 표현방식보다는 1TB 의 표현법이 좀더 용량이 커 보이는 효과를 얻게된다.

 

과거에는 1000바이트와 1024바이트의 차이는 24바이트의 수적인 차이가 비교적 낮은반면

요즘은 1000기가바이트와 1024기가바이트는 24기가바이트의 수적인 차이가 높으므로

두가지 단위를 구분해서 사용하는 추세이다.

 

다시 본론으로 돌아와 이러한 여러 비트들을 가지고 숫자들을 어떻게 표현할까

어릴때 배웠던 십진법을 이진법으로 , 이진법을 십진법으로 표현하는 방법을 배운적이 있을것이다.

십진수 이진수
1 1
2 10
3 11
4 100
5 101
6 110

 

아직 배워본적이 없거나 기억나지 않는다면 찾아보길 바란다.

 

다시 돌아와 컴퓨터는 이진수를 사용하게 되는데,

계산기로 컴퓨터에게 2+8 같은 덧셈을 어떻게 처리하게 될까

 

컴퓨터는 사용자의 요청에 따라 계산을 시작하기 전에

이 숫자들을 이진수로 변경하여 계산하기에 이러한 덧셈이 가능하다.

 

입력 2+8 (변환) => 10+1000 (계산) = 1010 (변환) => 10 출력

 

그럼 1이상의 값들은 이리저리 해서 표현되는건 알겠는데, 음수 또한 이진수로 어떻게 표현되나?

이진수의 음수표현은 2의 보수방식으로 어떤 수를 그보다 큰 2ⁿ에서 뺀 값을 음수로 표현한다고 한다.

 

3의 숫자를 음수로 표현해보자

3의 이진수는 11로 11보다 큰수 100를 알수 있고

100에서 11을 빼보면 01의 값을 알수 있다.

 

?? 01로 어떻게 음수라는걸 알아? 01은 그냥 1일수도 있는거 아니야?

겉모습으로는 구분이 안되는게 맞다.

CPU에서는 이를 구분하기 위해 CPU 내부의 플래그 레지스터가 있다.

 

여기서 사용되는 모든 숫자는 플래그 값을 들고다니며 이 숫자가 양수인지 음수인지 확인할 수 있다고한다.

우선은 이정도만 알아두자.

 

다음으로는 십육진법을 알아보자.

숫자 2를 이진수로 표현하면 10

32를 이진수로 표현하면 100000

음 희망월급 천만원을 이진수로 표현하면 100110001001011010000000

 

너무 길다..

그렇기에 컴퓨터에서는 데이터를 표기할때 십육진법을 사용하기도 한다.

 

대체 이거 왜씀?

 

가독성

매우 긴 이진수를 다루는것은 실수하기 쉽고 놓칠수 있기 때문이다.

 

이진수와의 관계

16진수는 각 자리수가 4비트의 이진수와 직접적인 연관이 있기에

이진수에서 십육진수로, 십육진수에서 이진수로 변환이 매우 쉽다.

 

횡설수설한 내용으로 내용이 이리튀고 저리튄다. 시간날때 정리하자

'CS' 카테고리의 다른 글

bit 비트란  (0) 2024.06.28
데이터 - 0과 1로 문자를 표기하는 방법  (0) 2024.06.26
시스템 버스  (0) 2024.06.23
주기억장치 메모리 RAM  (0) 2024.06.22
컴퓨터의 구조  (0) 2024.06.22