춘천교육지원청 영재교육원 과학 2024
디지털 신호와 신호의 암호화 이해하기
봄내중학교 - 봄내중 고준
춘천교육지원청 영재교육원 과학 2024
디지털 신호와 신호의 암호화 이해하기
봄내중학교 - 봄내중 고준
디지털, 아날로그
지금 시계가 몇 시 몇 분을 가르치는지 정확하게 읽을 수 있나요?
보는 사람들 마다 조금씩 다르게 대답을 하네요.
몇 시 몇 분인가요?
네, 모든 사람들이 이 시계를 보고 12시 46분 32초라고 대답을 하네요.
첫 번째 시계를 아날로그 시계라고 하고, 두 번째 시계를 디지털 시계라고 합니다.
아날로그 시계는 왜 사람들마다 다르게 대답했을까요?
분침의 경우 12와 3 사이에 수 많은 숫자가 연속적으로 있고 끊임없이 시간을 표현하고 있기 때문이죠.
디지털 시계의 경우 한 시간, 일 분, 일 초 단위로 시간이 나눠져 있기 때문에 정확하게 읽을 수 있죠. 물론, 더 작은 단위로 나눈다면 더 작은 시간으로 읽을 수 있겠죠.
즉, 아날로그는 연속된 값을 가지고, 디지털은 끊어져 있는 비연속적인 값을 가집니다.
아날로그 신호
디지털 신호
즉, 23초와 24초 사이의 값을 표현한다고 할 때, 아날로그 시계는 표현이 가능하지만 디지털 시계는 표현할 수 없죠.
그렇다면 컴퓨터는 연속된 자료를 사용할까요? 끊어져 있는 비연속적인 자료를 사용할까요?
컴퓨터의 특성에 대해 잠깐 이야기 해 볼까요?
여러분은 반도체라는 물체에 대해 들어 본 적이 있나요?
전기가 잘 통하는 물체를 도체라 하고 통하지 않는 물체를 부도체라고 합니다. 반도체는 평소에는 부도체인 0인 상태로 있다가 필요에 의해 조작을 가하면 전기가 통하는 도체인 1인 상태가 되는 물체를 말합니다.
반도체
컴퓨터를 포함한 우리 주변에 많은 IT 제품들이 반도체를 사용해서 동작한답니다. 전기가 통할 때는 1, 그렇지 않을 때는 0인 두 가지 상태만을 가지는 이산 자료를 사용하기 때문에 디지털 컴퓨터라고 합니다.
키보드로 입력한 글자가, 디카로 찍은 사진이, 캠코더로 찍은 영상이 어떻게 0과 1로 바뀌는지 궁금하지 않으세요?
숫자 8이 컴퓨터에서 이진수로 변하는 과정이 궁금하다면 : 수의 표현으로 가기
문자 “가”가 컴퓨터에서 이진수로 변하는 과정이 궁금한다면 : 문자 표현으로 가기
내가 부른 노래를 컴퓨터로 녹음했을 때 이진수로 변하는 과정이 궁금하다면 : 소리 표현으로 가기
내가 그린 그림을 디카로 찍었을 때 이진수로 변하는 과정이 궁금하다면 : 이미지 표현(래스터방식)으로 가기
에어로빅 대회를 캠코더로 찍었을 때 이진수로 변하는 과정이 궁금하다면 : 동영상 표현으로 가기
그림은 우리가 예전에 많이 쓰던 아날로그 장치들입니다. 지금 이 장치들을 대신해서 사용하고 있는 디지털 장치를 생각해 봅시다.
[네이버 지식백과] 디지털, 아날로그 (소프트웨어 어휘다지기 - 중등)
춘천교육지원청 영재교육원 과학 2024
디지털 신호와 신호의 암호화 이해하기
봄내중학교 - 봄내중 고준
ASCII
초창기에는 다양한 방법으로 문자를 표현했는데, 호환 등 여러 문제가 발생했다. 이런 문제를 해결하기 위해 ANSI1)에서 ASCII(American Standard Code for Information Interchange)라는 표준 코드 체계를 제시했고, 현재 이 코드가 일반적으로 사용되고 있다.
ASCII는 각 문자를 7비트로 표현하므로 총 128(= 27)개의 문자를 표현할 수 있다.
[그림 2-10] 7비트로 128가지를 달리 표현할 수 있다.
ASCII 문자 코드는 [표 2-6]과 같다. 표를 보는 방법은 해당 문자의 왼쪽에 있는 2진 코드가 ASCII 코드가 되는 것인데, 예로 문자 ‘A’의 왼쪽에 있는 1000001이 ‘A’의 ASCII 코드가 된다.
[표 2-6] ASCII 문자 코드
[표 2-6] ASCII 문자 코드0000000 | NUL | 0100000 | Space | 1000000 | @ | 1100000 | ` |
0000001 | SOH (Start of Heading) | 0100001 | ! | 1000001 | A | 1100001 | a |
0000010 | STX (Start of Text) | 0100010 | “ | 1000010 | B | 1100010 | b |
0000011 | ETX (End of Text) | 0100011 | # | 1000011 | C | 1100011 | c |
0000100 | EOT (End of Transmission) | 0100100 | $ | 1000100 | D | 1100100 | d |
0000101 | ENQ (Enquiry) | 0100101 | % | 1000101 | E | 1100101 | e |
0000110 | ACK (Acknowledge) | 0100110 | & | 1000110 | F | 1100110 | f |
0000111 | BEL (Bell) | 0100111 | ‘ | 1000111 | G | 1100111 | g |
0001000 | BS (Backspace) | 0101000 | ( | 1001000 | H | 1101000 | h |
0001001 | HT (Horizontal Tabulation) | 0101001 | ) | 1001001 | I | 1101001 | i |
0001010 | LF (Line Feed) | 0101010 | * | 1001010 | J | 1101010 | j |
0001011 | VT (Vertical Tabulation) | 0101011 | + | 1001011 | K | 1101011 | k |
0001100 | FF (Form Feed) | 0101100 | , | 1001100 | L | 1101100 | l |
0001101 | CR (Carriage Return) | 0101101 | - | 1001101 | M | 1101101 | m |
0001110 | SO (Shift Out) | 0101110 | . | 1001110 | N | 1101110 | n |
0001111 | SI (Shift In) | 0101111 | / | 1001111 | O | 1101111 | o |
0010000 | DLE (Data Link Escape) | 0110000 | 0 | 1010000 | P | 1110000 | p |
0010001 | DC1 (Device Control 1) | 0110001 | 1 | 1010001 | Q | 1110001 | q |
0010010 | DC2 (Device Control 2) | 0110010 | 2 | 1010010 | R | 1110010 | r |
0010011 | DC3 (Device Control 3) | 0110011 | 3 | 1010011 | S | 1110011 | s |
0010100 | DC4 (Device Control 4) | 0110100 | 4 | 1010100 | T | 1110100 | t |
0010101 | NAK (Negative Acknowledge) | 0110101 | 5 | 1010101 | U | 1110101 | u |
0010110 | SYN (Synchronous Idle) | 0110110 | 6 | 1010110 | V | 1110110 | v |
0010111 | ETB (End of Transmission Block) | 0110111 | 7 | 1010111 | W | 1110111 | w |
0011000 | CAN (Cancel) | 0111000 | 8 | 1011000 | X | 1111000 | x |
0011001 | EM (End of Medium) | 0111001 | 9 | 1011001 | Y | 1111001 | y |
0011010 | SUB (Substitute) | 0111010 | : | 1011010 | Z | 1111010 | z |
0011011 | ESC (Escape) | 0111011 | ; | 1011011 | [ | 1111011 | { |
0011100 | FS (File Separator) | 0111100 | < | 1011100 | \ | 1111100 | | |
0011101 | GS (Group Separator) | 0111101 | = | 1011101 | ] | 1111101 | } |
0011110 | RS (Record Separator) | 0111110 | > | 1011110 | ^ | 1111110 | ~ |
0011111 | US (Unit Separator) | 0111111 | ? | 1011111 | _ | 1111111 | DEL |
ASCII로 표현할 수 있는 문자들 외에 추가적인 문자를 지원해야 할 필요성이 있어 기존 7비트에 1비트를 추가하여 8비트를 사용한 코드가 정의되었다. 이런 코드를 확장(extended) ASCII라 하는데, 256(= 28)개의 문자를 표현할 수 있다. 기존 7비트 ASCII 코드에는 가장 왼쪽에 0을 추가하여 8비트 형식이 되게 했다.
[그림 2-11] 기존 ASCII의 확장 ASCII로의 표현
다음은 “We”를 8비트 형식의 ASCII로 나타낸 것이다.
[그림 2-12] ASCII로 표현한 “We”
그러나 ASCII로는 각 나라별 언어를 표현할 수 없다. 이런 문제를 해결한 코드가 유니코드인데, 이에 대해 살펴보자.
[네이버 지식백과] ASCII (컴퓨터 개론, 2013. 3. 10., 김종훈, 김종진)
춘천교육지원청 영재교육원 과학 2024
디지털 신호와 신호의 암호화 이해하기
봄내중학교 - 봄내중 고준
유니코드
각 나라별 언어를 모두 표현하기 위해 나온 코드 체계가 유니코드(unicode)다. 유니코드는 사용중인 운영체제, 프로그램, 언어에 관계없이 문자마다 고유한 코드 값을 제공하는 새로운 개념의 코드다. 언어와 상관없이 모든 문자를 16비트로 표현하므로 최대 65,536자를 표현할 수 있다.
유니코드 표준은 애플(Apple), HP, IBM, 썬(Sun), MS, 오라클(Oracle)과 같은 업계에서 채택되었으며, XML, 자바, ECMAScript, LDAP, CORBA 등의 표준에서 사용되고 있다. 영문대소문자와 숫자 코드는 유니코드 사이트(http://www.unicode.org/charts/PDF/U0000.pdf)에서 제공하는데, [그림 2-13]은 그 일부다. 각 문자 아래에 있는 값이 코드 값인데, 16진수로 나타낸 것이다.
[그림 2-13] 영문자, 숫자에 대한 유니코드
‘W’의 유니코드는 0057이고, ‘e’의 유니코드는 0065이므로 “We”의 유니코드(2진 체계)는 다음과 같다.
[그림 2-14] 유니코드로 표현한 “We”
그러면 유니코드로 한글을 어떻게 표현하는지 살펴보자.
한글은 AC00부터 D7A3까지 총 11,172자를 표현하는데, 이런 글자 수는 초성 19개, 중성 21개, 종성 28개를 곱한 값이다. 종성은 원래 27개지만, 종성이 없는 경우를 포함해 28개가 된 것이다.
초성 19 × 중성 21 × 종성 28 = 11,172
한글에 대한 유니코드는 유니코드 사이트(http://www.unicode.org/charts/PDF/UAC00.pdf)에서 제공하는데, [그림 2-15]는 그 일부다. ‘가’는 AC00으로 표현할 수 있다.
[그림 2-15] 한글에 대한 유니코드
이 웹 페이지를 참조하면 ‘한’의 유니코드는 D55C이고 ‘글’의 유니코드는 AE00임을 알 수 있다. 결국 “한글”을 유니코드로 나타내면 다음과 같다.
[그림 2-16] 유니코드로 표현한 “한글”
이런 한글에 대한 유니코드는 임의로 정한 것이 아니라 다음과 같은 공식에 따라 구해진 것이다.
{[(초성인덱스×21)+중성인덱스]×28} + 종성인덱스 + 0xAC001)
각 인덱스를 구하기 위해서는 유니코드 사이트(http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt)를 참고해야 한다.
그러면 공식을 이용해서 유니코드를 구하는 과정을 ‘한’에 적용해서 살펴보자.
인덱스를 구하기 위한 웹 페이지를 참고하면 다음과 같이 초성 ‘ㅎ’의 값은 0x1112이고 초성 시작 값은 0x1100임을 알 수 있다.
이때 초성 인덱스는 ‘ㅎ’ 값에 초성 시작 값을 빼면 구할 수 있으며, 값은 18이 된다.
0x1112 - 0x1100 = 18
중성인 ‘ㅏ’의 값이 0x1161이고, 중성 시작 값이 0x1161이므로 중성 인덱스는 0이 된다.
1161;N # HANGUL JUNGSEONG A
0x1161 - 0x1161 = 0
그리고 종성 ‘ㄴ’의 값이 0x11AB이고, 종성 시작인 ‘ㄱ’ 값이 0x11A8인데, 종성의 경우에는 종성이 없는 경우가 시작되므로 1을 추가로 더해야 한다.
계산된 초성 인덱스 18, 중성 인덱스 0 그리고 종성 인덱스 4를 유니코드를 구하는 공식에 대입하면 0xD55C를 구할 수 있다.
{[(18×21)+0]×28} + 4 + 0xAC00 = 0xD55C
‘한’에 대한 유니코드 0xD55C를 2진수 형식으로 나타내면 다음과 같다.
1101010101011100
[네이버 지식백과] 유니코드 (컴퓨터 개론, 2013. 3. 10., 김종훈, 김종진)
춘천교육지원청 영재교육원 과학 2024
디지털 신호와 신호의 암호화 이해하기
봄내중학교 - 봄내중 고준
강원특별자치도춘천교육지원청 홈페이지 (gwe.go.kr)
춘천교육지원청 영재교육원 과학 2024
디지털 신호와 신호의 암호화 이해하기
봄내중학교 - 봄내중 고준