Hanghae99

[CS스터디:1일 1로그 100일 완성 IT지식] 10장 비트 모아 데이터

뮤셍 2022. 5. 23. 22:51

이진수

 

일련의 비트가 주어졌을 때, 각 자리의 숫자들을 10대신 2를 기수로 표현하고 0과 1만 사용하여 숫자를 표현하는 수이다.

십진수

 

십진수는 0부터 9까지 10개의 숫자 표현이 가능하다.
두자리 숫자는 0부터 99, 세자리 숫자는 0부터 999까지 등등
즉, 0부터 9까지의 모든 숫자를 이용해 수를 표현한다.
우리가 일상에서 사용하는 숫자를 10진수라고 생각하면 편하다
ex) 1876 = 1*1000 + 8*100 + 7*10 + 6*1

10진법의 역사는 고대 이집트때부터 거의 전세계 수준으로 통일되어져 왔다고 한다.
인류의 셈법이 10진법으로 정착된 이유는, 사람의 수를 셀 때 10개의 손가락 중 몇개가 펴지고 접혔는지로 세워왔기 때문이라고 추정된다고 한다.
사람이 손가락으로 최대한 펴거나 접을 수 있는 수가 10이므로 자연스럽게 상당수의 단위가 10을 묶음으로 형성 된 것이다.

다시 이진수로 돌아와서


그럼 십진수를 이진수로 변환시키려면 어떻게 해야할까?
우리가 만약 컴퓨터에 10이라는 숫자를 입력했다고 가정을 했을때, 컴퓨터는 십진수로 표기된 10을 이진수로 변환 시킬 것이다.
책에 나온대로 계산을 해보면
10이라는 숫자를 2로 수가 1이 될 때까지 계속 나누는 것이다.
나눌 때마다 0또는 1이 되는 나머지 값을 적고, 몫은 다음 나누기를 위한 값으로 사용한다.


10/2 = 5 이고 나머지는 0
5/2 = 2 이고 나머지는 1
2/2 = 1 이고 나머지는 0
1/2 = 0 이고 나머지는 1

이렇게 계산한 값을 역순으로 나열하면 십진수를 이진수로 변환한 값인
10 = 1010 이 된다.

바이트(byte)


모든 최신 컴퓨터에서 데이터 처리와 메모리 구성의 기본 단위는 8비트로 이는 하나의 단위로 취급된다.
비트 8개 = 1byte

1byte는 비트가 8개이니까 (2^8 = 256, 즉 256개의 구별되는 값을 인코딩 할 수 있다)
인코딩 된 값을 컴퓨터는 숫자 0부터 255사이의 정수를 표현하거나, 하나의 문자당 7비트가 필요한 아스키코드 문자 하나 또는 또다른 무언가를 표현할 수 있다.

십육진수


십육진수는 이진수가 너무 많은 공간을 차지하기 때문에 대안으로 나온 표기법이다.
0부터 9까지, A부터 F까지 로 표기한다.
각 십육진수 숫자는 4개의 비트를 표현한다.
즉, 1바이트 = 8비트 = 2개의 십육진수 숫자

프로그래머가 아니라면 십육진수를 볼 수 있는 곳은 많지 않다.
예를 들면, 웹페이지의 색상에 십육진수가 사용된다.
컴퓨터에서 색상을 표현하는 방식은 각 픽셀에 3바이트를 할당하여 각 바이트에 적색의 양, 녹색의 양, 청색의 양을 표현한다. 그리고 이 방법을 RGB 인코딩이라고 한다.

32비트와 64비트 차이


32비트, 64비트는 컴퓨터의 CPU가 데이터를 처리할 때 사용하는 '레지스터'의 크기를 말한다.
'레지스터'란?
극히 소량의 데이터나 처리중인 중간 결과를 일시적으로 기억해 두는 고속의 전용 영역을 말한다.

즉, 64비트가 32비트보다 레지스터의 크기가 커서 더 많은 양의 데이터를 연산 할 수 있다.
64비트에서 128비트로 이행이 언제 일어날지 예측할 순 없지만 한동안은 이대로 괜찮을 것이다.
왜냐면 128비트는 굉장히, 굉장히 비싸기 때문.