2022. 1. 22. 02:37ㆍCS
1. 문자를 사용한 수 표현
사람들은 컴퓨터 간에 통신이 시작된 초기부터 더욱 많은 정보들을 송수신을 하고 싶어했다. 단순한 2진 데이터를 보내고 싶었지만 생각보다 복잡한 일이었다. 아스키코드 중 상당수가 제어 문자로 되어있었고 이런 제어 문자는 시스템에 따라 처리하는 방식이 달랐기 때문이다. 그리고 몇몇 시스템은 7비트만 송수신 할 수 있었다.
(1) 출력 가능하게 변경한 인코딩
출력 가능하게 변경한 인코딩 Quoted-Printable encoding은 쿼티드 프린터블 인코딩, 또는 QP 인코딩이라고 부른다. 8비트 데이터를 7비트 데이터만 지원하는 통신 경로를 통해 송수신하기 위해 고안된 인코딩 방법이다. 특히 전자우편 첨부를 처리하기 위해 만들어졌다.
QP 인코딩은 몇가지 추가 규칙 있는데, 주르이 맨 끝에 탬과 공백 문자가 온다면 이를 각각 =09와 =20으로 표현해야만 한다. 인코딩된 데이터는 한 줄이 76자를 넘을 수 없고, 어떤 줄의 맨 뒤가 =로 끝나면 의도적인 줄바꿈을 뜻하며, 수신 쪽에서 QP로 인코딩한 데이터를 디코딩 할 때에는 이 =를 제거해야만 한다.
(2) 베이스 64 인코딩
8비트 이진 데이터(실행 파일이나 압축 파일 등)를 문자 코드에 영향을 받지 않는 공통 아스키 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩 방식을 가리키는 개념이다.
원래 베이스 64라는 말 그대로 64진법이란 뜻인데, 64는 2의 여섯 제곱수이고, 2의 제곱수들에 기반한 진법들 중에서 화면에 표시되는 아스키 문자들로 표현할 수 있는 가장 큰 진법이기 때문이다.
즉, 다음 제곱수인 128진법에는 128개의 기호가 필요할 것인데 화면에 표시되는 아스키 문자들은 128개가 되질 않는다.
그래서 해당 인코딩 방식 또한 전자 메일을 통한 이진 데이터 전송 등에 자주 쓰인다. QP 인코딩은 잘 작동하긴 하지만 1바이트를 표현하기 위해 3바이트를 사용하는 엄청 비효율적인 방법이기 때문에 이럴 때 베이스 64 방식이 더 효율적이다. 과거 컴퓨터 사이의 통신 속도가 너무 느려서 이런 효율성을 중요하게 생각했다.
베이스 64 인코딩은 3바이트 데이터를 4문자로 표현한다. 3바이트 데이터의 24비트를 네 가지 6비트 덩어리로 나누고, 각 덩어리의 6비트에 출력 가능한 문자를 할당해 표현하고 아래와 같은 변환을 사용을 사용한다.
Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.
위에서 설명한 과정을 거쳐 베이스64로 아래와 같이 변환된다.
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0
aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1
c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0
aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdl
LCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
참고로, 첫 단어인 Man을 변환하는 과정은 다음과 같다.
Text content | M | a | n | |||||||||||||||||||||
ASCII | 77 | 97 | 110 | |||||||||||||||||||||
Bit pattern | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
Index | 19 | 22 | 5 | 46 | ||||||||||||||||||||
Base64-Encoded | T | W | F | u |
(3) URL 인코딩
웹페이지 url에서 %26이나 %2F 같은 문자 시퀀스를 본적이 있을 것이다. 몇 문자가 특별한 의미를 지니고 있기 때문이다. 이를 읽기 가능하게 만들어 줘야하는데 이때 url 인코딩 방식을 사용한다.
문자들은 8비트 덩어리의 시퀀스로 표현되는데, 각 덩어리는 UTF-8 방식처럼 2개의 16진 문자로 표현할 수 있다. url 인코딩은 퍼센트 인코딩이라고도 불리는데, %뒤에 어떤 문자의 16진 표현을 덧붙이는 방식으로 문자를 인코딩 한다.
예를 들어, 슬래시(/)는 하위 디렉토리 표현 등 url에서 매우 중요한 의미로 사용된다. 만약 특별한 의미로 쓰이고 싶지 않을 경우에는 %2F 등으로 표현이 가능하다. 여기 %에 특별한 의미를 부여했기 때문에 url에서 %를 표현하기 위해서는 %24를 또 사용해야 한다는 번거로움이 있다.
2. 색을 표현하는 방법
컴퓨터 모니터는 빨간색, 녹색, 파란색 광선을 섞어서 색을 만들어내며, 이런 색 표현법을 RGB색 모델(RGB color model)이라고 부른다.
RGB 컬러 모델은 빨강, 초록, 파랑이라는 3가지 색상 값을 이용해서 색을 표현한다.
색을 혼합할수록 색이 밝아지는 가산체계(Additive System)을 사용한다.
1) RGB를 같은 비율로 혼합 → 가장 밝은 흰색
Red(1, 0, 0) + Green(0, 1, 0) + Blue(0, 0, 1) = White(1, 1, 1)
2) 빨강색 + 초록색 → 노란색
Red(1, 0, 0) + Green(0, 1, 0) = Yellow(1, 1, 0)
3) 초록색 + 파란색 → 청록색
Green(0, 1, 0) + Blue(0, 0, 1) = Cyan(0, 1, 1)
4) 파란색 + 빨강색 → 자홍색
Red(1, 0, 0) + Blue(0, 0, 1) = Magenta(1, 0, 1)
(1) 투명도 추가
1984년 영화 제작사 루카스필름의 톰 더프(Tom Duff)와 토머스 포터(Thomas Porter)는 투명도와 합성을 구현하는 새로운 방법을 발명했고, 그 이후 이 방법은 표준이 됐다. 이들은 각 필셀에 알파라는 투명도 값을 추가했다. 알파는 수학적으로 0이상 1이하인 값이다. 0은 해당 값이 완전히 투명하다는 뜻이고, 1은 완전히 불투명하다는 뜻이다. 여러 다른 알파값의 색을 합성해 새로운 색을 만들어내는 방법을 정의하는 일련의 합성 계산법(compositing algebra) 식이 있다.
(2) 색 인코딩
웹에서는 색을 16진 트리플렛(hex triplet)으로 표현한다. 16진 프리플렛은 # 뒤에 여섯 자리 16진 숫자를 추가해 #rrggbb 처럼 표현하는 방식이다. 여기서 rr은 빨간색의 값, gg는 녹생의 값, bb는 파란색의 값이다. 예를 들어 #ffff00은 노란색, #000000은 검은색, #ffffff는 흰색이다. 각자의 8비트 색값을 두 자리 문자로 된 16진 표기로 바꾼다.
'CS' 카테고리의 다른 글
CS : 데이터 구조와 처리 (0) | 2022.02.15 |
---|---|
CS : 네트워킹 (0) | 2022.02.08 |
CS : 컴퓨터 아키텍쳐와 운영체제 (0) | 2022.02.04 |
CS : 메모리와 디스크의 핵심 : 순차논리 (0) | 2022.01.28 |
CS : 컴퓨터 내부의 언어 체계 (0) | 2022.01.18 |