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

박건영(Parkgunyoung)·2022년 5월 22일
0

CS스터디

목록 보기
1/4

<이진수>

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


십진수?

십진수는 0-9까지 10개의 숫자 표현이 가능하다!
두자리 숫자는 0-99, 세자리 0-999 까지 ....

즉, 0-9까지 모든 숫자를 이용해 수를 표현한다.
우리가 일상에서 사용하는 숫자를 10진수라고 생각하면 편하다.

<10진법 역사>

이거는 고대 이집트때부터 거의 전세계 수준으로 통일되어져왔다고 한다.

인류의 셈법이 10진법으로 정착된 이유는, 사람의 손가락이 10개이기 때문이라고 추정된다고 한다. 사람이 수를 셀 때 10개의 손가락 중 몇개가 펴지고 접혔는지로 세워왔기 때문이다.

사람이 손가락으로 최대한 펴거나 접을 수 있는 수가 10이므로 자연스럽게 상당수의 단위가 10을 묶음으로 형성되었다. 만약 사람의 손가락이 n개(11개, 12개 ,13 개 등등) 였다면 n진법으로 정착되었을 것이라고 한다.


다시 본론으로

한 가지 예시로

우리가 계산기를 사용할 때 10진수로 입력을 해서 10진수로 출력을 받는데, 계산기 안에서 2진수로 변환해서 데이터를 연산하게 된다.

(책에서는 1867을 이진수로 변환하는 과정을 표로 보여준다. 수를 2로 나누어 몫과 나머지 값으로 표기하여 나머지 값을 거꾸로 읽은 것이 10진수를 이진수로 표기한 값이라고 설명한다. 1867 = 11101001011)


우리가 만약 컴퓨터에 10 이라는 숫자를 쳤다고 하자

그럼 컴퓨터에서는 10진수로 표기된 10을 2진수로 변환 시킬 것이다.

(2진수는 0과 1로 표기된다 !)

책에 나온대로 계산을 해보자!

10이라는 숫자를 2로 수가 1이 될 때 까지 겁나게 나눈다.

나눌 때마다 0또는 1이 되는 나머지 값(나누었을 때 남는 나머지 값)을 적고, 몫은 다음 나누기를 위한 값으로 사용한다.

10/2 = 5이고 나머지는 0이 될 것이다.
5/2 = 2이고 나머지는 1
2/2 = 1이고 나머지는 0
1/2 = 0이고 나머지는 1

이렇게 계산한 나머지 값을 역순으로 나열하면
10진수를 2진수로 변환한 값이 된다!

10 = 1010

2진수를 다시 10진수로 변환하는 것은 다시 이진수를 거듭제곱 하면된다.

123+022+121+0201*2^3+0*2^2+1*2^1+0*2^0
그럼 요렇게 된다.
8+0+2+08+0+2+0
=10=10

조금 더 2진수에 대해 알고 싶다면 아래의 링크를 참조하면 좋을 것 같다!!
https://intworld.tistory.com/84


바이트(byte)

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

바이트라는 단어는 컴퓨터 설계자인 베르너 부흐홀츠가 1956년에 만든 단어라고 한다!

비트 8개 = 1byte

1byte는 비트가 8개 이니까(28=2562^8=256, 즉 256개의 구별되는 값을 인코딩 할 수 있다)

인코딩된 값은 컴퓨터는 숫자를 0부터 세니 0-255 사이의 정수를 표현하거나, 하나의 문자당 7비트가 필요한 아스키코드 문자 하나(나머지 1비트는 남겨둔다고 한다) 또는 또다른 무언가를 표현할 수 있다.

* 인코딩(사용자가 입력한 문자나 기호들을 컴퓨터가 이용할 수 있는 신호로 만드는 것)

1byte 로 표현 가능한 것

  • 0-255 사이의 정수
  • 7비트를 필요로하는 아스키코드 하나
  • 또다른 무언가

2byte 로 표현가능한 것

= (16개의 비트이기 때문에 2의16승 =65,536)

-0-65,535 사이의 정수
-아스키코드 2개
-유니코드 문자 1개

아스키코드와 유니코드에 대한 내용은 아래 링크를 통해 자세하게 알 수 있습니다!
https://m.blog.naver.com/ycpiglet/222146759413


십육진수

십육진수는 이진수로 표현을 하려면 너무많은 공간을 차지해서 대안으로 나온 표기법이라 한다!
0~9, A, B, C, D, E, F 로 표기한다.

각 십육진수 숫자는 4개의 비트를 표현한다.

즉, 1바이트 = 8비트 = 2개의 십육진수 숫자!


웹페이지 색상에 십육진수가 사용된다??

컴퓨터에서 색상을 표현하는 방식은 각 픽셀(px)에 3바이트를 할당하여 각 바이트에 적색의 양,녹색의 양, 청색의 양을 표현한다고 한다.
이 방법을 RGB 인코딩이라 한다!

즉, 아래의 1px 에는 3byte가 할당 되어져 있고,
1byte=적색, 1byte=녹색, 1byte=청색 의 양을 표현한다.

<다시한번 개념정리>
1byte = 8bit = 2개의 십육진수

그럼 1px에 들어가는 십육진수 숫자 갯수는?

1px은 3byte = 32bit = 십육진수는 하나당 4개의 bit니 총 8개의 16진수로 표현이 된다!
1px은 3byte = 24bit = 십육진수는 하나당 4개의 bit니 총 6개의 16진수로 표현이 된다!


1px에 들어가는 3byte를 16진법으로 바꾸어 색상을 표현하면

짙은 적색(빨강)을 예시로 설명을 해보자면

FF/00/00(R=1byte/G=1byte/B=1byte)

1byte= 32bit = 256개의 구별되는 값을 표현 가능

그럼 R.G.B 각각 1byte씩 할당되어져 있으니 256개의 구별되는 값을 가질 수 있다.
(256은 R.G.B 각각의 표현할수 있는 색상의 양이라고 생각하면 좋을 것 같다!)

R(적색)이 FF로 표기되었는데 이거는 R(적색)의 양 0~256중 가장 높은 적색의 양을 표현했다고 생각하자!

16진수의 숫자 값이 0에 가까워 질수록 색상은 어두워지고 F에 가까워질수록 밝아진다!


32비트와 64비트 차이

32비트 64비트는 컴퓨터의 CPU(중앙처리장치)가 데이터를 처리할 때 사용하는 '레지스터'의 크기를 말한다고 한다.

<레지스터란?>
극히 소량의 데이터나 처리중인 중간 결과를 일시적으로 기억해 두는 고속의 전용 영역을 말한다.

64비트가 32비트보다 레지스터의 크기가 커서 더 많은 양의 데이터를 연산 할 수 있는 것이다!

128비트 가 더 좋은거 아님?>>>> 비싸서 못씀


마지막 저자의 일침

비트의 모음의 의미가 상황에 따라 결정된다.
그저 보이는 것 만으로 비트가 무엇을 의미하는지 식별할 수 없다....

비트의 모음이 2,4,8 바이트로 표현되는 큰 수의 일부이거나 , 사진이나, 음악, 작품, 색상, 어플리케이션의 명령어가 될 수 도 있다는 것을 명심해라...!

profile
쓰러지면어때일어나면그만인걸

0개의 댓글