끄적끄적 코딩일지

Digital 과 Anolog 본문

IT용어

Digital 과 Anolog

BaekGyuHyeon 2022. 5. 18. 16:34

Anolog 란?

어떤 수치의 변화량을 측정하는데 이것이 연속적으로 변화됨을 나타내는 개념이다.

대부분 자연계에서의 변화는 전부 Anolog 이다.

이를 그래프로 표시해 보면

처럼 시간에 따라 연속적으로 변환다.

예를들면 하루동안의 기온 변화를 생각해 보자

새벽에 가장 낮은 기온을 보이다가 해가 뜨면 점점 기온이 올라간다. 이는 점심에 달했을시에 최고점으로 올라가며

저녁이 되어 해가 지면 기온이 점점 낮아진다.

해가 뜨자마자 바로 한낮의 기온까지 올라가는것도 아니며 저녁에 해가 지자마자 바로 기온이 뚝 떨어지는것도 아니다.

 


Anolog 신호

위와같이 Anolog의 특징을 가지고 있는 신호, 즉 시간이 지남에 따라 연속적으로 변화하는 신호를 Anolog신호라고 한다.

가장 대표적인 Anolog신호는 사람의 말이라고 할수 있다.

사람간 대화에서 서로 전달하고자 하는 의미를 말로써 전달을 하는데 입모양, 혀의 위치등에 따라 연속적으로 신호가 만들어진다.

그리고 상대방은 이 소리를 귀를 통해 뇌에서 분석함으로써 신호의 의미를 이해한다.


 Digital 이란?

Anolog와 반대로 시간이 지남에 따라 단계적으로 변함을 나타내는 개념이다.

보통은 사람이 필요에 따라 만든 인공물에서 찾아볼 수 있다.

이를 그래프로 표시하면

으로 볼 수 있는데 이처럼 한 시점에 급격한 변화를 띄게 된다.

 


Digital 신호

위와같이 단계적인 변화를 가지는 신호를 Digital 신호라고 한다.

가장 대표적인 예가 컴퓨터 신호라고 할 수 있다.

컴퓨터는 실제로 전기가 흐르는지 않는지만 감지할 수있다. 때문에 전기가 흐르면 1, 흐르지 않으면 0 으로 분석한다.

컴퓨터에서 파일을 생성하거나 다운로드 받으면 010101101 등의 형태로 저장한다. 때문에 파일 저장 용량등을 보면 MByte, GByte

하는데 0 또는 1 하나를 표현한 것이 bit, 이 bit가 8개 모이면 1byte, 1byte가 1,000개 1,000,000개, 1,000,000,000개 모여있으면

1kbyte, 1Mbyte, 1Gbyte 등으로 표현이 된 것이다. 즉 적은 용량의 파일 하나라도 엄청난 양의 0과 1의 조합으로 되어 있는 것이다.


Digital 신호 -> Anolog 신호, Anolog신호 -> Digital 신호 ??

본격적인 컴퓨터가 등장하기 시작하면서 이는 꽤 중요한 문제가 되었다.

컴퓨터는 모든 정보를 디지털 신호로 처리를 하는데 그렇다고 우리가 컴퓨터에게 입력을 할때 0 과 1 의 조합을 입력하지 않을것 아닌가?

(실제로 초기에 0과 1을 입력하여 프로그래밍을 했다 with 천공카드, 카드에 구멍을 뚫거나 뚫지 않음으로써 0 과 1을 입력했다.)

그리고 컴퓨터에서 0과 1만 사용한다고 그 처리 결과를 우리가 볼때 0과 1의 조합으로 볼수도 없는 노릇이다.

때문에 이를 해결하기 위해 Digital 신호를 Anolog 신호으로 변환하거나 Anolog 신호를 Digital 신호로 변환하는 기법이 발전하게 되었다.

 

아래에서 그 몇가지 기법을 소개 하고자 한다.

더보기

보통 Anolog를 Digital으로 변환하는것이 인코딩(encoding), Digital을 Anolog으로 변환하는것을 디코딩(decoding) 이라고 한다.


사진 / 영상

사진과 영상 모두 시각적인 현상, 즉 빛의 의한 현상이다. 때문에 이를 저장하기위해 빛의 3원색이라고 하는 RGB(Red,Green,Blue)를 활용하였다.

더보기

RGB가 빛의 3원색이라고 하는 이유는 이 색의 조합으로 모든 빛의 색을 표현할 수 있기 때문이다.  비슷한 원리로 색의 3원색도 있다.

사진, 영상등을 촬영하기위한 카메라에는 들어오고 RGB값을 측정할 수 있는 센서가 있는데 이것 하나를 화소(Pixel)라고 한다. 카메라에서 천만화소, 1억 화소등 하는것은 카메라 안에 이 화소의 개수를 의미하는 것이다. 이 화소 하나하나가 하나의 점의 색을 결정하고 이 화소가 모여 하나의 그림이 완성되는것이다. 만약 이 그림을 연속적으로 저장한다면 영상이 되는 것이다.

더보기

카메라 화소가 높다고 무조건 선명한 사진이 나오는 것은 아니다. 인간이 인식할 수 있는 화소의 한계가 있기 때문. 물론 화소가 낮으면 확대시 사진이 흐릿하게 보인다. 

비슷한 예로 아무리 다운로드 속도가 빨라져서 영화 1편을 1분만에 받는 시대가 온다고 해도 우리가 영화를 2배속으로 볼 수 없는것과 마찬가지이다.

 

추가로 모니터의 해상도를 표현할때도 가로 화소 크기 * 세로 화소 크기 값으로 표현한다.

예를들어 1920 x 1080은 가로 1920pixel 세로 1080pixel 이라는 의미이다. HD, UHD, 4K등은 이런 해상도의 등급값을 의미한다.

 


소리

소리신호를 디지털 신호으로 하는데는 표본화->양자화->부호화의 단계를 거친다.

 

1. 표본화(Sampling)

표본화는 Anolog 신호를 Digital 신호로 변환하기 위해 아날로그 값을 측정하는것이다.

 

예를들어 소리가 아래와 같은 음파를 디지털 신호로 변환한다고 해 보자(손그림 ㅈㅅ)

해당 음파를 디지털 신호로 변환하기 위해 2단위로 표본을 취하면

형태로 측정이된다.

 

이 표본을 더 많이 측정할수록  원래 파형(실제 음성)과 가까운 표본을 취할 수 있다.

대신 그만큼 더 용량이 증가하게 되는것이다.

 

2. 양자화(Quantizing)

1.에서 취한 값을 안타깝게 그대로 쓸 수 없다. 만약 우리가 2진법으로 표현할 수 있는 단위가 1 이라면 해당 단위에 맞게 근사값으로 측정을 해야한다.

처럼 표본값에서 단위값에 가장 가까운 값을 찾는다.(반올림)

이 기준을 0.5, 0.1, 0.001 등 작게 설정할 수록 표본값과의 오차가 줄어든다.

이 값을 그래프로 그려보면

처럼 표현이 가능하다.

더보기

더 많은 sample을 체취할수록, 더 세밀하게 양자화 할수록 원본에 가까운 파형이 완성된다.

이와같은 이유로 용량이 낮은 음악이나 동영상이 소리가 이상하게 들리거나 하는등의 원인이 표본화 범위를 넓게 잡았거나 양자화 단위를 크게 잡아서, 혹은 둘다이기 때문이다.

3.부호화(Coding)

위에서 취한 값을 0과 1로 변환하는 과정이다. 예를 들어 위에서는 -5 ~ 10 까지의 범위가 있다. 각 양자값에 5씩 더하면 0 ~ 15까지, 딱 4bit으로 표현할 수 있다.

  1001    /    1011    /      1010    /   0111....

9(4+5) /  11(6+5) /    10(5+5) /  7(2+5) ....

복호화할땐 받은 0과 1의 조합을 4개 단위로 쪼개 숫자로 만든다음 5씩 빼면 원래 숫자를 얻을 수 있다.

물론 실제로 저런 규칙(5를 더한다거나 4bit으로 변환한다거나) 하진 않는다.

더보기

사진이나 영상, 소리등을 변환한 것을 단순하게 저장하면 용량이 메우 커진다. 때문에 사진같은 경우 JEPG,PNG , 영상같은 경우 AVI,MKV,MP4 같은 압축 기법이 소리인 경우 MP3같은 포멧 방식이 등장하게 되었다


문자

ASCII

문자를 표시하기 위한 방법은 생각외로 단순하다. 각 문자를 특정 번호와 연결하는것. 대표적인 것이 ASCii 코드이다.

 ASCII는 7bit으로 문자를 구분한다.

예를들어 ABCD을 입력하면

A - > 65 -> 1000001

B - > 66 -> 1000010

C - > 67 -> 1000011

D - > 68 -> 1000100

ABCD -> 1000001 1000010 1000011 1000100 으로 변환(인코딩)을 한다.

 

하지만 ASCii 에서 ASC는 America Standard Code의 약자이다. 즉 미국에서 만든 표준이다. 때문에 영어와 특수문자 이외의 문자는

포함하고 있지 않다.

하지만 다른 Utf-8,MS949(Microsoft에서 만든 표준) 등 문자를 변환하는 모든 표준들은 ASCii 코드를 확장하는 형태를 취하고 있다. 

UNICODE

이후에 전 세계로 컴퓨터가 보급되기 시작하면서 각 나라에서는 자신의 문자를 컴퓨터에서 표시되기를 원했다. 때문에 만들어진것이 UNICODE이다. utf-8 이나 utf-16, utf-32등이 unicode를 사용해서 만든 표준이다.

각각 8bit, 16bit,32bit를 사용해서 문자를 표현한다는 의미이다.

더보기

● utf-8은 1byte~4byte으로 변환하는 가변 방식의 변환이다.

utf-16, utf-32는 무조건 문자 하나당 2byte,4byte를 사용한다. 즉 같은 문자라도 어떤 방식을 사용하느냐에따라서 용량이 달라지기도 한다.

무조건 utf-8을 선택하는것이 좋은것은 아니다.

● 가끔 문서를 열어보면 글자가 깨지는 경우가 있는데 이는 문서를 만들때 인코딩한 방식과 문서를 디코딩한 방식이 달라서 그렇다.

Tip. 여러 사람이랑 프로젝트를 진행할때 받은 파일 내에서 한글이 깨진 경우가 있다. ex )주석

이는 문서를 작성할때 인코딩한 방식과 파일을 열때 사용한 디코딩 방식이 달라서 이다.

만약 위와 같은 파일이 있다고 하자.

이 파일은 작성하고 저장할때 기본값인 utf-8으로 저장이 되었다.

이를 MS949으로 열도록 설정을 바꾼 결과

 와 같이 한글이 깨지는 현상이 발생하였다. 이처럼 인코딩 방식과 디코딩 방식을 정확하게 선택하지 않으면 문자가 깨지는 현상이 발생할 수 있다.

'IT용어' 카테고리의 다른 글

Web에서 실시간 데이터를 표시하기  (0) 2022.06.09
HTTP란  (0) 2022.06.06
SQL  (0) 2022.06.05
SSD와 HDD  (0) 2022.05.17
CPU에 대해서 알아보자  (0) 2022.05.16