본문 바로가기
카테고리 없음

숫자 체계, 비트와 바이트

by 느억맘 2021. 3. 26.

각각의 진수끼리의 변환은 대략 아래처럼 10가지의 상황으로 구성할 수 있음

 

10진수 -> 2진수

10진수 -> 8진수

10진수 -> 16진수

2진수 -> 8진수

2진수 -> 16진수

8진수 -> 2진수

8진수 -> 16진수

16진수 -> 2진수

16진수 -> 8진수

 

컴퓨터가 2진수를 사용하는 이유?

 

반도체를 구성하고있는 최소 단위의 부품은 바로 '트랜지스터' 이다.

 

트랜지스터의 작동은 대게 트랜지스터에 전류가 흐르고 있을 때 ON , 전류가 흐르고 있지 않을때는 OFF

 

두가지의 상태만 존재한다

 

컴퓨터가 2진법을 사용하는 이유는 단순히 이런 트랜지스터의 작동원리에 의거하여 2진법이 이러한 트랜지스터의 상태

 

를 숫자로 표현하기에 앞서 가장 쉬운 방식이기 때문

 

=> 트랜지스터가 OFF 상태일때 -> 0

     트랜지스터가 ON   상태일때 -> 1

 

트랜지스터는 컴퓨터의 가장 최소단위라 할 수 있으므로 프로그래밍 언어의 가장 최소단위 <비트(bit)>

 

즉 1비트는 트랜지스터의 상태를 나타내는 단위와 같다고 볼 수 있겠다 (2가지 경우의 수를 가짐)

 

=> 1비트가 0이면 트랜지스터 한개가 OFF 인 상태

     1비트가 1이면 트랜지스터 한개가 ON   인 상태

 

좀 더 나아가서 8비트가 각각 1111'0000 이면 4개의 트랜지스터는 ON 상태 그 외의 트랜지스터는 OFF 상태라 할 수 있다.

 

 

비트가 뭔데?

 

 

사전적 의미로 "작은 조각" 이라는 뜻을 가지고 있음 뭐 이름 그대로 가장~~~~~ 작은 단위이니 적절한 이름이라고 할 

 

수 있을듯.

 

참고로 비트의 순서는 딱히 정해져 있지 않은데 (트랜지스터의 순서?) 표기상 오른쪽이 제일 작은단위가 오므로

 

굳이 비트의 순서를 센다면 오른쪽부터 0비트 1비트 ... 이렇게 세는게 일반적인듯.

 

 

비트와 오디오의 관계

 

오디오 포맷은 매우 많다. 뭐 예를 들자면 WAV, FLAC, MP3 등등.... 많은데

 

이러한 포맷들이 오디오 품질을 결정하는 것이 아니라 "비트" 수가 결정함.

 

보통 오디오 등에서 비트 수의 표현을 비트레이트(bitRate) 로 표현하는데 직역 그대로 비트율, 비트 비율이라 해석할 수 있다.

 

왜?

 

보통 단위가 kbit/s 이런 형태임. 즉 s 는 second이므로 초당 몇 비트를 받아올 수 있는지를 표현하는 단위임

 

즉, 128kbit/s 이면 초당 128000 비트를 받아올 수 있다는 뜻을 말한다.

 

일반적으로 이러한 비트레이트가 높을 수록 당연히 오디오 입장에서는 고음질이라고 할 수 있다.

 

이 비트레이트는 크게 이 두가지 비트 뎁스(bitDepth), 샘플링 레이트(samplingRate) 로 나뉠 수 있음

 

먼저 비트 뎁스를 설명하기에 앞서 이러한 모든 행위는 아날로그 오디오를 디지털 오디오로 변환하기 위해서임.

 

즉, 원본 오디오 파일은 굴곡이 없는 아날로그 형식인데, 이 아날로그 오디오를 디지털로 변환하기 위해 사용되는 방법이라는 것. 즉 좀더 깊게 들어가자면 아무리 디지털 신호를 잘게 쪼갠다 하더라도 원본 아날로그 오디오 만큼의 품질은 따라잡지 못한다.

 

아날로그 상태의 원본 오디오 파일, 굴곡이 없고 매끄럽다.

 

왼쪽 : 낮은 bit depth, 낮은 sampling rate 오른쪽 : 높은 bit depth, 높은 sampling rate

디지털 신호는 아무리 잘개 쪼갠다 하더라도 굴곡이 존재할 수 밖에 없음.

bit depth 는 결국 높이의 간격을 얼마나 촘촘하게 만드느냐의 차이

 

Sampling Rate 는 얼마나 잘개 쪼개냐의 차이

 

오디오 파일의 용량 계산

샘플링 레이트 x 비트 뎁스 x 길이 x 스테레오 or 모노 (스테레오 = 2, 모노 = 1)

 

ex) 44100(Hz) x 16(bit) x 2(sec) x 2(channel) = 2,822,400(bit/s)

 

 

바이트(Byte) 는 뭐야?

바이트는 영어의 bite(한입 물기) 에서 나온 단어임(byte). 이름이 byte로 바뀐 이유는 기존 bit와 발음이 곂치지 않게 하기위해서라는데 뭔가 이상한 이유임;;;

 

어쨋든, 1 byte 는 8 bit 와 같다고 정의함 약자로는 1B = 8b

1byte == 8bit

 

그러면 왜 byte 를 주로 많이 사용하는 것일까?

 

왜냐면 메모리나 저장매체 등에 데이터를 저장할때 주로 저장되는 문자나 숫자 등의 기본 단위가 바이트임 (상식적으로 비트는 0 아님 1 만 저장할 수 있는데 비트로 저장을 하면 매우 복잡해질 것임)

 

고로 자연스럽게 바이트가 기본(최소) 단위가 된 것임

 

번외) 1word 는 데이터를 처리하기 위한 최소 단위

 

번외) 보통 인터넷 속도를 말할때 1기가비트 100 메가 비트 이렇게 표현하는데 실제 속도는 이러하다.... 

=> 1Gbps -> 125MB/s

500Mbps -> 62.5MB/s

100Mbps -> 12.5MB/s

어쩌면 통신사의 농락일지도...

 

 

컴퓨터의 데이터 단위

이름/기호 축약
킬로 (Kilo, K) 1,000 1KB
메가 (Mega, M) 1,000,000 1MB
기가 (Giga, G) 1,000,000,000 1GB
테라 (Tera, T) 1,000,000,000,000 1TB
페타 (Peta, P) 1,000,000,000,000,000 1PB

- 일반적인 서구권의 단위는 3칸 기준으로 콤마를 넣음(우리나라는 반대로 4칸 기준)

 

헌데, 컴퓨터에서는 1KB = 1,024B (byte) 이다  즉 1K = 1024!

 

왜? 컴퓨터는 10진수가 아닌 2진수를 사용함 저 1000 같은 경우도 10진수를 기준으로 하기 때문에 

 

1000을 사용한다고 치면 이진수가 1111101000 이렇게 지저분하지만 

 

1024를 사용하면 10'000'000'000 즉, 2^10 으로 깔끔하게 나오기 때문임!! 즉 더 깔끔해지기 때문이라나

 

※ 1024 = 2^10

 

이름/기호 축약
킬로 (Kilo, K) 2^10 1KB
메가 (Mega, M) 2^20 1MB
기가 (Giga, G) 2^30 1GB
테라 (Tera, T) 2^40 1TB
페타 (Peta, P) 2^50 1PB

 

ex) (1,000 x 1,000) => (1,024 x 1,024)

 

근데 1000 단위를 사용하는 곳이 있다. 대표적으로 하드제조사, 네트워크 망, 인터넷  회사등등임 

 

저장공간을 예로 들자면, 컴퓨터 기준으로는 1GB = 1024MB 인데 

 

1000 기준으로는 1GB = 1,000 x 1,000 x 1000 이므로 이걸 다시 컴퓨터 기준으로 변환하면

 

1,000 x 1000 x 1000 / 1,024 / 1024 = 953.674 MB 가 된다

 

ex) 1TB = 1024GB

 

1000 x 1000 x 1000 x 1000 / 1024 / 1024 / 1024 = 931.322 MB