✅ bit, Byte
컴퓨터는 0과 1로 이루어진 binary code, 0과 1로 이루어진 이진 숫자 체계를 사용하는 코드만 인식할 수 있습니다.
"bit"과 "Byte"는 데이터를 표현하고 저장하는 데 사용됩니다. 컴퓨터가 이해할 수 있는 데이터를 이진(binary) 데이터로 나타내기 위해서 사용하는 단위입니다. 이 두 용어는 데이터의 크기, 데이터의 전송 등을 나타낼 때 중요한 역할을 합니다.
- Hex : 16진수 ( hexadecimal )
- Dec : 10진수 ( decimal )
- Bit (비트)
"bit"는 이진(binary) 디지털 정보의 가장 작은 단위입니다. "bit"는 0 또는 1의 값을 가질 수 있으며, 컴퓨터에서 정보의 표현 단위로 사용됩니다. 예를 들어, "01100110"과 같이 여덟 개의 비트로 이루어진 이진 숫자는 컴퓨터 메모리에 저장되는 정보의 최소 단위입니다.
- Byte (바이트)
"Byte"는 8개의 비트로 이루어진 데이터 단위입니다. 즉, "Byte"는 0부터 255까지의 값을 가질 수 있습니다. "Byte"는 일반적으로 문자, 숫자, 이미지, 오디오 등의 데이터를 표현하는 데 사용됩니다. 또한, 많은 컴퓨터 시스템에서 메모리와 데이터 전송의 최소 단위로 사용됩니다.
👉 "bit"은 0 또는 1의 값을 가지며, 정보의 최소 단위로 사용되고, "Byte"는 8개의 비트로 이루어진 데이터 단위로, 문자와 같은 다양한 데이터를 표현하고 저장하는 데 사용됩니다. 일반적으로 컴퓨터에서 데이터의 크기는 "Byte"로 표시되며, 데이터 전송 속도는 "bit"로 표시됩니다.
✅ 유니코드란?
유니코드(Unicode)는 컴퓨터에서 문자를 표현하는 국제 표준입니다. 유니코드는 전 세계의 모든 문자를 정확하게 표현하고 조작할 수 있도록 설계되었습니다. 이는 각 문자마다 고유한 번호를 부여하는 방식으로 동작하며, 이를 '코드 포인트(세상의 모든 문자에 대한 유일한 식별자, ID)'라고 부릅니다.
유니코드는 다양한 문자 집합, 인코딩, 스크립트, 기호 등을 지원하며, 이는 각각의 글자를 숫자로 매핑함으로써 이루어집니다. 이로 인해 유니코드는 세계 각국의 언어, 수학적 기호, 이모지 등 다양한 형태의 문자를 포함할 수 있습니다.유니코드에는 UTF-8, UTF-16, UTF-32 등 여러 가지 인코딩 방식이 있습니다. 이들 인코딩 방식은 유니코드 코드 포인트를 실제 바이트로 변환하는 방법을 정의합니다. 실제 바이트로 변환하여 저장하는 이유는 컴퓨터는 0과 1의 binary로 값을 인식하기 때문입니다. 또한 네트워크를 통해 값을 전달할 때도 binary로 전달합니다.
UTF-8은 가장 널리 사용되는 유니코드 인코딩 방식으로, 아스키 코드와의 호환성 및 가변 길이 문자 인코딩의 이점 때문에 인기가 있습니다.유니코드의 도입으로 인해 글로벌 컴퓨팅 환경에서 다양한 언어의 처리가 간편해졌습니다. 이전(웹브라우저 등장과 DB 데이터 저장 등등)에는 문자를 표현하는 방식이 언어와 지역에 따라 다르게 적용되었기 때문에, 다양한 언어 간의 데이터 교환에 많은 문제가 있었습니다. 유니코드의 표준화를 통해 이러한 문제가 크게 줄었습니다.
※유니코드 코드 포인트는 유니코드 표준에서 문자나 기호를 나타내는 고유한 숫자 값입니다. 유니코드 코드 포인트는 보통 "U+" 다음에 4~6개의 16진수 숫자로 표현됩니다. 이 숫자는 해당 문자의 고유한 ID와 같은 역할을 합니다.다음은 몇 가지 유니코드 코드 포인트의 예입니다.
- 'A'의 유니코드 코드 포인트: U+0041
- 'a'의 유니코드 코드 포인트: U+0061
- '가'의 유니코드 코드 포인트: U+AC00
- '中'의 유니코드 코드 포인트: U+4E2D
- '😀'의 유니코드 코드 포인트: U+1F600
유니코드 코드 포인트를 실제 바이트로 변환하는 방법은 사용하는 유니코드 인코딩 방식에 따라 달라집니다.
✅ UTF-8 인코딩
UTF-8은 문자 인코딩 방식 중 하나로, 유니코드(Unicode)를 8비트(1Byte) 단위로 나눠서 인코딩합니다. 유니코드는 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다루기 위한 국제 표준입니다. UTF-8은 웹에서 가장 널리 사용되는 인코딩 방식 중 하나로, ASCII 문자들은 1바이트로, 다른 문자들은 최대 4바이트까지 사용할 수 있습니다.
UTF-8의 주요 특징은 다음과 같습니다
- 변동길이 인코딩
UTF-8은 문자에 따라 1바이트에서 4바이트까지 변동하는 길이의 인코딩을 사용합니다. 기본 ASCII 문자는 1바이트를 사용하며, 다른 다양한 문자들은 2바이트 이상을 사용합니다.
- 하위 호환성
UTF-8은 ASCII와 완전히 호환됩니다. 즉, 기존의 ASCII 텍스트는 UTF-8 인코딩된 텍스트로 취급할 수 있으며, 반대도 마찬가지입니다.
- 자체 복구 기능
UTF-8 인코딩은 바이트 순서에 의해 문자의 시작과 끝을 결정하므로, 데이터가 손실되거나 변경된 경우에도 복구가 가능합니다.
- 전 세계 문자 지원
UTF-8은 전 세계의 거의 모든 문자를 지원하므로, 다양한 언어와 기호를 하나의 문서나 메시지에서 사용할 수 있습니다.UTF-8은 가변 길이 문자 인코딩 방식으로, 1바이트에서 4바이트까지 다양한 길이의 바이트를 사용할 수 있습니다.
🔹인코딩하는 방법
유니코드를 UTF-8로 인코딩하여 컴퓨터가 이해할 수 있는 이진(binary)데이터로 변환합니다. 그때 위와 같은 일렬의 규칙을 가지고 있습니다. UTF-8이 8bit(1Byte) 단위로 값이 저장되었음을 표시하기 위해서 최상위 바이트(MSB[Most Significant Byte])에 위와 같은 일련의 규칙을 지정합니다.
- 1Byte : 0xxx xxxx
- 2Byte : 110x xxxx
- 3Byte : 1110 xxxx
- 4Byte : 1111 0xxx
- 그 이하의 바이트에는 10xx xxx를 적용합니다.
🔹코드 포인트 범위에 따른 규칙 적용법
- 코드 포인트 U+0000부터 U+007F까지(ASCII 범위)의 경우
UTF-8은 단일 바이트를 사용합니다. 단일 바이트라 함은 1Byte를 의미하기도 합니다. MSB에 0xxx xxxx으로 시작합니다.
→ 0xxx xxxx
- 코드 포인트 U+0080부터 U+07FF까지의 경우
2바이트를 사용합니다. MSB에 110x xxxx으로 시작합니다. 두 번째 바이트는 10xx xxxx가 적용됩니다.
→ 110x xxxx 10xx xxxx
- 코드 포인트 U+0800부터 U+FFFF까지의 경우
3바이트를 사용합니다. MSB에 1110 xxxx으로 시작합니다. 두 번째, 세 번째 바이트는 10xx xxxx가 적용됩니다.
→ 1110 xxxx 10xx xxxx 10xx xxxx
- 코드 포인트 U+10000부터 U+10FFFF까지의 경우
4바이트를 사용합니다. MSB에 1111 0xxx으로 시작합니다. 두 번째, 세 번째, 네 번째 바이트는 10xx xxxx가 적용됩니다.
→ 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx
👉예를 들어 ‘가’의 코드 포인트 U+AC00을 인코딩 하는 법을 살펴 보겠습니다.
- 16진수로 표시된 유니코드 AC00을 이진수로 변환하면 아래와 같습니다.
→ 1010 1100 0000 0000
- 코드 포인트 U+0800~U+FFFF까지 범위에 들어가므로 3Byte를 사용합니다.
→ 1110 xxxx 10xx xxxx 10xx xxxx
- 위의 규칙을 적용하여 UTF-8로 인코딩한 결과는 아래와 같습니다.
3Byte 인코딩 규칙을 정의하고, 이진수로 표시한 값을 순서대로 대입하면 됩니다. UTF-8로 인코딩한 ‘가’ 문자열에 데이터는 아래와 같이 저장됩니다.
1110 1010 1011 0000 1000 0000
이렇게 인코딩하는 이유는 UTF-8은 가변 길이 문자 인코딩 방식이므로, 문자를 디코딩하는 입장에서는 가변 길이 문자가 몇 Byte인지 알아야하기 때문에 위와 같은 규칙을 정한 것입니다.
- 한글 “녱”를 UTF-8로 인코딩한 과정
🏷️이미지 출처 및 참고한 사이트
Uploaded by N2T