📕Repersenting Text
💡컴퓨터가 데이터를 표현하는 방법
📗Bits and bytes
- 이진수는 비트로 구성된다.
- 비트는 스위치를 표현한다.(on/off == 0/ 1)
- 바이트는 8비트이다.
- 바이트는 하나의 문자를 표현한다.
📗Representing Text
text를 표현하기 위해서는 무엇이 제공되어야 할까?
text는 문자의 순서 열이다.
표현할 수 있는 문자의 수는 유한하다. 따라서 그것들을 리스트화 시키고 각각의 이진 문자열에 할당시켜야 한다.
📗Character set
- 각 문자를 나타내는 코드 및 문자 list
- 컴퓨터 관련 업종자들은 표준화를 하는데 동의했다.
📗ASCII Character Set
정보교환을 위한 코드체계(알파벳만 적용 가능)
American Standard Code for Information Interchange의 약칭
초기 Ascii code는 7bit를 사용해서 128개의 유니크한 문자를 표현할 수 있다.
뒤에 확장된 ASCII Code는 8bit를 사용함.
ASCII
아스키코드의 처음 32문자는 화면에 인쇄할 수 있는 간단한 문자의 표현이 없다.
아스키코드 해석
- NUL : null character(end of character string)
- BS : backspace
- LF : line feed
- CR : carriage return
아스키 코드의 단점
영어만을 표준으로 사용해서 한자를 표현할 방법이 없음.
--> 유니코드의 등장
📗The Unicode Character Set
- 확장된 ASCII Code(8bit)도 국제적으로 사용하기에는 적절하지 않았다.
- 그래서 등장한 유니코드는 16bit를 사용했다.
- 2^16 = 65535개의 문자를 표현할 수 있다.
- 처음 256 문자는 정확하게 확장된 ASCII CODE의 character set과 일치한다.
텍스트(문자)는 문자 별로 대응되는 비트 패턴을 정의한 "Code"를 사용
📗Code의 종류
- ASCII : 7bit -pattern
- 2^7 = 128개의 문자를 표현 가능
- Extended ASCII : 8bit pattern
- 2^8 = 256개의 문자를 표현 가능
- Unicode : 16-bit pattern
- 2^16 = 65536개의 문자를 표현 가능
- ISO Universal Character Set(UCS) : 32bit pattern
- 2^32 = 42억 개의 문자를 표현 가능
ASCII Code를 문자로도 볼 수 있지만 숫자로도 볼 수 있다. (이진수 그대로의 숫자로 해석)
✔한글코드체계
💡현대 한글
- 초성 19자, 중성 21자, 종성 28지
- 모든 조합 : 19 * 21 * 28 = 11,172자 -> Unicode / UTF-16에 할당되어있음.
- 실제 사용하는 글자는 2천~3천 자
💡고대 한글
- 초성 124자, 중성 94자, 종성 137자
- 모든 조합 : 1,638,750자 -> 16bit code 체계로는 불가능, 32bit 필요[UCS 등장]
💡한자 문제
- 얼마나 많은 한자가 필요한가?
- 한국(K) : 상용한자 1800자~범용 한자 최대 4800자
- 일본(J) : 상용한자 2,136자 ~ 국가표준 최대 6315자
- 중국(C) : 필수한자 3500자~통용 한자 최대 8105자
- 고대 베트남 : 한자 사용 시기가 있었음
- 고대 중국 : 최소 8만 자~최대 20만 자 추산 - > 16bit로는 불가능, 32bit 사용
💡국가별 한자 코드의 필요성
- 정체자 : 한국, 대만, 홍콩, 마카오
- 신자체 : 일본
- 간화자 : 중국 본토
📗Unicode 제정 시의 토론
CJK에 한자 코드 배정
- CJK= China(대만, 싱가포르, 홍콩 포함), Japan , Korea(+베트남)
- 단일 코드로 CJK 공유가 안되니?
- 반론 : 국가마다 표기, 발음이 다르다
- 결론 : CJK 각각에 별도 코드 부여
한국에 한글 코드 배정
- 한글 자모 24자만 배정하겠다.
- 한국 바론 : 자모가 모여서 1개 음절이 만들어진다.
- 결론 : 완성형 코드 부여'
표준화된 문자 집합을 사용하는 장점은 무엇인가? 혹시 단점이 있다면 무엇인가?
- 장점 : 유니코드에 한글이 들어가면서 전 세계 software에 한글 지원이 가능해졌다.
- ex) ms word에 한글 지원 등
- 단점 : 코드에 빠진 글자가 있다. (물론 잘 사용하지 않는 글자 조합이긴 함)
📕Text Compression(문자열 압축)
저장공간이나 대역폭이 부족하다면 어떻게 데이터를 효율적으로 저장하고 전송할 수 있을까?
압축은 큰 파일에 대해서 엄청나게 효율적이다( audio, graphics, video)
텍스트 파일은 전형적으로 크기가 작지만, 삽화로 사용된다.
우리는 텍스트 파일을 정보의 손실 없이 문자당 16 bits 보다 적게 써서 사용할 수 있을까?
📗Lossless Compression techniques include
- Keyword encoding
- Run-length encoding
- Huffman encoding
📗Keyword Encoding [키워드 압축]
초기에는 사용했지만, 지금은 사용하지 않는다.
자주 사용되는 텍스트 패턴을 단일 특수 문자로 바꾸는 방법.
대체로 이 방식은 word에다가 symbol을 부여해서 word->symbol로 압축하는 것이다.
하지만 이 방식의 단점은 word에서의 #인지 symbol에서의 #인지 구분할 방법이 없는 것이다.
📗Run-Length Encoding [실행 길이 압축]
- 어떤 종류의 데이터 파일에서는, 하나의 값이 긴 시퀀스로 반복해서 반복될 수 있다.
- 반복된 시퀀스를 대체하기 위해서 아래의 개념을 사용
- a flag
- the repeated value (반복되는 값)
- the number of repetitions (반복되는 횟수)
- *n8
- * is flag
- n is the repeated value
- 8 is the number of times n is repeated
- Original text
- bbbbbbbbjjjkllqqqqqq+++++
- Encoded text
- *b8 jjjkll*q6*+5
- 여기서 왜 j와 L을 인코딩하지 않았을까?
- "jjj"를 인코딩하면 *j3이고 "ll"을 인코딩하면 *l3이다.
- 원래 차지하고 있는 공간이랑 같은 크기를 쓰거나 더 쓰게 되기 때문에 인코딩 안 하는 것이다.
- 이러한 방법은 실제로 영어문장에서는 의미 없다.(GIF기법에서 사용)
📗Huffman Encoding [허프만 압축]
자주 사용하는 빈도수의 문자를 작은 bit로 우선 배정한다.
예를 들어 text가 "ballboard"이라고 하자.
문자 별로 구별이 가능하다. 00과 001이 없기 때문에 구별이 가능.
성능도 매우 우수하다.
ex) ZIP
허프만 코딩은 prefix coding의 예시이다.
📕Representing Audio Data
Audio \-[오디오]
음성, 소리, 음악 등
오디오 변환 과정
샘플링, 양자화, 부호화
codec = compressor + decompressor
compressor : audio -> sampling, quantization , coding -> code 형태로 압축
decompressor : 압축된 code->역변환-> audio로 재생
📗아날로그 오디오의 디지털 변환
- 샘플링(sampling): 표본화
- 균일한 간격으로 아날로그 신호 샘플(표본)을 추출(예 : 1초에 8000번) [Hz = 1/sec]
- 양자화(quantization)
- 추출된 샘플에 적절한 숫자를 부여 : 디지털 부호화를 위해
- 예 : 아날로그 샘플 신호 크기가 27.2인 경우 27로 끊음
- 얼마나 정밀하게 양자화할지?
- 8bit 양자화 -> 256단계, 16bit 양자화 -> 65536단계
- 추출된 샘플에 적절한 숫자를 부여 : 디지털 부호화를 위해
- 부호화(coding)
- 양자화된 정수 값을 비트 스트립으로 변환[2진수로 변환]
- 예) : 27-> 0001 1011(8bit 패턴)
- 1초에 8000개의 샘플을 추출하고, 샘플당 8비트로 부호화하면
- 8000/s * 8 bits = 64000 bps = 64 kbps
- 양자화된 정수 값을 비트 스트립으로 변환[2진수로 변환]
📗Representing Audio Information
당신은 집에서 음악을 듣기 위해서 스테레오를 사용한다.
스테레오는 전기적 신호를 각 스피커에게 전송하고 그 신호들은 진동해서 소리를 만들어낸다.
너의 MP3와 이어 버드(에어 팟, 버즈) 같은 것들이 그 예이다.
따라서 신호는 음파의 아날로그 표현이다.
Digitize the audio signal by
- Sampling : 주기적으로 전압을 측정한다.
- Quantization : 한정된 비트의 숫자를 사용하여 전압을 숫자로 나타냄.
How often should we sample?
- 1초에 40000번 sampling 한다면 적절한 사운드를 생산하기에 충분하다.
- 40 khz sampling!
- 더 잦은 샘플링은 고음질의 음악을 만들어냄.
- 데이터의 손실을 감수하면서도 적절한 사운드를 생산해야 하는 것이 샘플링
샘플링 비율의 예
- 8000hz : 전화, 무선 전화기
- 22050hz : 저품질 MPEG 오디오
- 44100hz : Audio cd, MPEG-1 오디오 표준
- 96000Hz : DVD- Audio , Blu-ray 디스크
- 192,000hz : DVD-Audio, Blu-ray 디스크
CD = Compact Disc
- CDs는 오디오정보를 디지털적으로 저장한다.
- Pits(reflect poorly)
- Lands(reflect well)
- 낮은 세기의 빛에 의해 읽힌다.
- 리셉터는 반사를 2진수로 변환한다.
- Bit string 은 오디오 신호를 표현한다.
Audio Formats
- WAV, AU, AIFF, VQF , and MP3
- 다양한 압축 기법을 사용한다.
MP3 (우수함)
- MPEG-2 audio layer 3 file [ 약칭 ]
- MPEG = Motion Picture Experts Group
- 귀와 뇌 사이의 상호 관계에 대한 연구를 바탕으로, 인간에 의해 인식되지 않는 주파수 정보를 폐기한다(과학).
- Huffman 인코딩 형식을 통한 추가 압축
- 정보 손실 압축이다.
CD , MP-3, FLAC
CD : compact disc
- 최초로 광범위하게 사용된 digital 음원 확보
- 압축 x
- CD 음질 : 16bit, 44.1khz
MP3
- 사람이 거의 들을 수 없는 부분[저주파, 고주파]은 생략-> 용량을 줄임
- 추가로 압축 적용
- 음질이 떨어짐
FLAC : free lossless audio codec
- 음질을 높이지만, 파일 크기는 커짐 (MP3 단점 보완)
'학교 > 컴퓨터학개론' 카테고리의 다른 글
[컴퓨터학개론 11]- gate & circuit (0) | 2022.07.03 |
---|---|
[컴퓨터학개론 10장]- image &video (0) | 2022.07.03 |
[컴퓨터학개론 8장]-Numerical data (0) | 2022.06.29 |
[컴퓨터학개론 7장]- Data & Computer (0) | 2022.06.29 |
[컴퓨터학개론 6장]- binary number (0) | 2022.06.28 |