목록컴퓨터 구조 (4)
Today I Learned
컴퓨터는 7비트값을 처리하도록 설계되지 않았기 때문에 8비트를 사용해 아스키 문자를 저장한다. 8비트만 사용하면 모든 문자를 표현할 수 있기 때문에 굳이 16비트를 사용해 비트를 낭비하지 않는다. 유니코드는 문자 코드에 따라 각기 다른 인코딩을 사용해 이런 문제를 해결한다. 인코딩(Encoding)은 다른 비트 패턴을 표현하기 위해 사용하는 비트 패턴을 뜻한다. 우리는 비트 같은 추상화를 사용해 숫자를 표현하고, 숫자를 사용해 문자를 표현하며, 다시 다른 숫자를 사용해 문자를 표현하는 숫자를 표현한다. 유니코드 변환 형식 8비트(Unicode Transformation Format-8 bit)는 인코딩 방법이 하위 호환성과 효율성 때문에 가장 널리 쓰이고 있다. UTF-8은 모든 아스키 문자를 8비트로 ..
숫자를 사용하는 일반적인 경우 중에는 색 표현이 있다. 그래프의 좌표를 표현하기 위해 숫자 쌍을 사용할 수 있음을 알 것이다. 컴퓨터 그래픽스는 전자 모눈종이에 해당하는 것에 색을 표현하는 점(blob)을 찍어서 그림을 만드는 과정이다. 이때 모눈의 각 격자에 찍는 점을 그림 원소(picture element)라고 부르고, 줄여서 픽셀(pixel)이라고 부른다. 컴퓨터 모니터는 빨간색, 녹색, 파란색 광선을 섞어서 색을 만들어내며, 이런 색 표현법을 RGB색 모델(RGB color model)이라고 부른다. 색은 컬러 큐브(color cube, 정육면체)라는 것으로 표현할 수 있다. 컬러 큐브에서 각 축은 주(primary)색을 표현하며 위 그림과 같다. 값이 0이면 그에 해당하는 주 색의 빛을 끈다는 ..
웹 페이지 URL에서 %26이나 %2F 같은 문자 시퀀스를 본 적이 있을 것이다. 이런 값이 있는 이유는 URL이라는 문맥에서 몇몇 문자가 특별한 의미를 지니기 때문이다. 하지만 이런 특별한 의미를 지니는 문자 리터럴(literal)로 사용할 필요가 있다.('리터럴'이라는 말은 '문자 그대로'라는 뜻으로, 특별한 의미 없이 해당 문자 자체를 뜻하는 경우를 가리키는 영어 단어다.) 위 그림처럼 문자들은 8비트 덩어리의 시퀀스로 표현된다. 각 덩어리는 2개의 16진 문자로 표현할 수 있다. URL 인코딩은 퍼센트 인코딩(percent-encoding)이라고도 부르는데, %뒤에 어떤 문자의 16진 표현을 덧붙이는 방식으로 문자를 인코딩한다. 예를 들어, 슬래시 문자(/)는 URL에서 특별한 의미를 지닌다. 이..
베이스64 인코딩은 3바이트 데이터를 4문자로 표현한다. 3바이트 데이터의 24비트를 네 가지 6비트 덩어리로 나누고, 각 덩어리의 6비트값에 출력 가능한 문자를 할당해 표현한다. 이때 아래 표와 같은 변환을 사용한다. - 0, 1, 2라는 세 바이트를 인코딩하면 AAEC다. 아래 그림은 이 변환 과정을 보여준다. 이 인코딩은 모든 3바이트 조합을 4바이트 조합으로 변환할 수 있다. 하지만 원본 데이터가 3바이트의 배수라는 보장은 없다. 패딩(padding) 문자를 도입해 이런 문제를 해결한다. 원본 데이터가 2바이트 남으면 끝에 =를 붙이고, 1바이트 남으면 끝에 ==를 붙인다. 이 인코딩 방식은 여전히 전자우편 첨부파일 전송에 많이 사용 중이다.