언어란 무엇인가문자 언어비트와 2진법MSB(Most Significant Bit) & LSB(Least Significant Bit)8진법과 16진법텍스트 표현아스키 코드유니코드유니코드 변환 형식 8비트(Unicode Transforamtion Format 8-bit : utf-8)문자를 사용한 수 표현base64 인코딩URL 인코딩
정리 : 개념적으로 단순한 비트를 사용해 아주 큰 숫자나 문자, 색 등의 복잡한 요소를 표현할 수 있음
언어란 무엇인가
모든 언어의 의미는 기호의 집합(한글, 영어, .. 등등)으로 인코딩 된다. 하지만 의미를 기호로 인코딩하는 것만으로는 충분치 않음. 소통하는 당사자들이 같은 문맥을 공유해야 함
문자 언어
- 문자 언어는 기호를 나열한 것
- 문자 언어의 틀을 이루는 세가지
- 기호가 들어갈 상자 : 비트
- 상자에 들어갈 기호 : 0 또는 1
- 상자의 순서: 제일 오른쪽 상자는 2^0, 그다음 상자는 2^1 이런식으로 순서.
비트와 2진법
- 비트(기호가 들어갈 상자) : 2진법을 사용한다는 뜻의 binary와 숫자를 뜻하는 digit 가 합쳐진 말임
- 1bit 에는 2진수 값 하나가 들어갈 수 있는 것임
MSB(Most Significant Bit) & LSB(Least Significant Bit)
- 2진수에서 가장 오른쪽의 비트를 가장 작은 유효비트(LSB)라고 부르고
- 2진수에서 가장 왼쪽의 비트를 가장 큰 유효 비트(MSB)라고 부름
- 가장 오른쪽의 비트를 변경하면 2진수의 값이 가장 작게 변경되고 가장 왼쪽의 비트를 변경하면 2진수의 값이 가장 크게 변하기에 이런 이름이 붙음
8진법과 16진법
- 8진법(octal representation): 2진수 비트들을 3개씩 그룹으로 묶는 아이디어임 → 즉 8진수 한자리는 3비트
- 0으로 시작하는 숫자는 8진 숫자. 예를 들어 017은 8진수이며 값은 10진수로 15
- 16진법(hexadecimal representation): 2진수 비트들을 4개씩 그룹으로 묶는 아이디어 → 즉 16진수 한자리는 4비트!
- 0x가 앞에 붙은 숫자는 16진수. 예를 들어 0x12f는 16진수이며 값은 10진수 303임
- 비트 그룹 : 비트는 너무 작아서 기본 단위로 사용하기에는 유용성이 떨어짐 → 비트를 좀 더 큰 덩어리로 조직화해야 함
- 비트갯수 4 → 니블
- 비트 갯수 8 → 바이트
- 비트 갯수 16 → 하프 워드
- 비트 갯수 32 → 워드
- 64 → 더블 워드
텍스트 표현
아스키 코드
- 키보드에 있는 모든 기호(문자)에 대해 7비트 수 값을 할당함
- 아스키는 영어를 표현하는 데 필요한 모든 문자를 포함하고 있어 상당 기간 표준 역할을 했는데 이후 그 밖의 언어를 지원해야 될 필요성과 비트의 가격이 떨어짐에 따라 유니코드 라는 새로운 표준이 생김!
유니코드
- 유니코드 : 문자에 16비트 코드를 부여
- 유니코드가 생긴 당시에는 16비트면 지구 상에 있는 모든 문자를 다 담고도 여분이 남으리라 생각했지만 그 후 유니코드는 21비트 까지 확장됨
유니코드 변환 형식 8비트(Unicode Transforamtion Format 8-bit : utf-8)
- 인코딩 : 다른 비트 패턴(예: 유니코드)을 표현하기 위해 사용하는 비트 패턴(예: 유니코드 변환 형식 8비트 ...)
- 비트를 사용해 숫자를 표현. 숫자를 사용해 문자를 표현하고 다시 다른 숫자를 사용해 이런(문자를 표현하는) 숫자를 표현함
- 예시 : 문자 pi
- Unicode : 0x 03C0
- Utf-8 : 0xCF 0x80 ⇒ 유니코드 pi를 utf-8에서는 8비트 두 덩어리로 나타냄
- 즉 비트를 사용해 숫자를 표현(0x 03C0)하고 이를 통해 문자를 표현(pi)하고 다시 다른 숫자(0xCF 0x80)을 사용해 이런{문자를 표현하는} 숫자(0x 03C0)을 표현함
- 10진수 65가 문자 A(아스키 코드) 이 문자 A를 utf-8로 나타내면 다른 숫자로 표기됨
- utf-8(Unicode Transformation Format-8bit)
문자를 사용한 수 표현
- 2진 데이터를 보내기 위한 방법임
- 2진 데이터를 직접 보내는 것은 단순하지 않음. 그 이유는 아스키 코드 중 상당수가 제어 문자로 되어있고 이러한 제어 문자는 시스템에 따라 처리하는 방식이 다르기 때문임.
base64 인코딩
- 3바이트 데이터를 4문자로 표현함. 24비트를 6비트 덩어리로 나누고 각 덩어리의 6비트 값에 출력 가능한 문자를 할당해 표현함
- 전자우편 첨부파일 전송에 많이 사용중

URL 인코딩
- 웹 페이지의 URL표현에도 이와 거의 같은 방식을 사용함
- 퍼센트 인코딩이라고 부르는데 %뒤에 어떤 문자의 16진 표현을 덧붙이는 방식으로 문자를 인코딩함
- utf-8로 인코딩된 16진 수의 배열에 URL인코딩을 적용할 수 있는 것. 문자를 인코딩하는 거니까
- 예를 들어 슬래시 문자(/)는 URL에서 특별한 의미를 지니는데, 이를 URL에서 사용하되 /를 리터럴(literal - 문자그대로) 로 사용하고 싶은 경우 %2F로 대체함