비트(bit) / 바이트(Byte)
컴퓨터 메모리에서 모든 데이터는 이진수 (0과 1)로 표현된다.
- 비트(bit)는 2진수로써 0또는 1의 값을 가진다.
- 컴퓨터는 일반적으로 8개의 단위의 비트(8bit)를 하나의 그룹으로 사용하는데 이를 바이트(Byte)라고 한다.
바이트는 8개의 비트로 2^8(256)개 까지 저장 가능(비트는 0또는 1의 값을 가지기 때문)
비트와 바이트의 대소문자 구분
- 비트(bit)는 소문자로 'b'를 사용 - 예: 'Mbps'
- 바이트(byte)는 대문자로 'B'를 사용 - 예: 'MB'
바이트 배열(Byte Array)
바이트 배열(Byte Array) 이란 컴퓨터 메모리에서 연속적인 바이트 단위로 데이터를 저장한 구조이다.
바이트 배열(Byte Array) 특징
- 연속적인 메모리 할당
- 숫자, 문자, 이미지, 오디오 등 다양한 형태의 데이터를 저장할 수 있다.
비트 연산자 (AND, OR, XOR)
비트 연산자는 컴퓨터 프로그래밍에서 비트 단위로 논리 연산을 수행하는 연산자이다. 주로 정수 값을 비트 단위로 다룰 때 사용되며 AND, OR, XOR, NOT 등의 기본 연산자가 있다. 각각의 연산자는 비트 단위에서 0과 1을 조합하여 결과를 생성한다.
AND 연잔자 - &
- 두 비트가 모두 1일 때만 결과가 1이 된다.
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
1101 & 1011 = 1001
OR 연산자 - |
- 두 비트 중 하나라도 1이면 결과가 1이 된다.
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
1101 | 1011 = 1111
XOR 연산자 - |
0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 0 = 1
1 ^ 1 = 0
1101 | 1011 = 0110
NOT 연산자 - ~
- 비트 값을 바꾼다. (0은 1로, 1은 0으로)
- 단항 연산자(피연산자가 하나뿐)
~1011 = 0101
2진수, 10진수, 16진수
2진수
- 표현할 수 있는 숫자가 0,1 2개로 이루어져 있다.
- 컴퓨터의 기본 언어로, 모든 데이터와 명령어가 2진수로 변환되어 처리된다.
예시: 1011 (2진수) = 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 11 (10진수)
10진수
- 0에서 9까지 총 10개의 숫자를 사용하여 숫자를 표현
예시: 47 (10진수)
16진수
- 0에서 9까지의 숫자와 A,B,C,D,E,F의 문자(총 16개)를 사용하여 숫자를 표현
- 메모리 주소 및 색상 코드 등에서 많이 사용된다.
예시: 47 (10진수)
2진수를 10진수로 변환

16진수를 10진수로 변환

10진수를 2진수로 변환

10진수를 16진수로 변환

ASCII, String – 바이트와 String 의 차이
- ASCII는 미국 표준 정보 교환 코드로, 컴퓨터가 문자를 숫자로 변환하는 방식이다.
- 주로 문자(알파벳, 숫자, 특수 기호)를 7비트로 표현하며, 총 128개의 문자 집합을 표함
String
- String은 문자들이 연속적으로 배열된 문자열 형태이다.
- 프로그래밍 언어에서 주로 텍스트 데이터를 처리할 때 사용된다.
- 문자들이 배열된 순서에서 저장되며, 문자 개수에 따라 길이가 달라진다.
에시: "Hello" // 5개의 문자가 연속적으로 배열된 형태
바이트와 String의 차이
- 바이트(Byte):
- 컴퓨터가 처리하는 가장 작은 데이터 단위로, 모든 데이터가 바이트로 표현된다.
- 텍스트는 물론, 이미지, 사운드 등 모든 파일의 기본 표현 단위
- 예: "Hello"라는 String은 각 문자마다 1바이트씩 차지하게 되므로, 총 5바이트(영문 기준)가 된다.
- String:
- 텍스트 데이터를 의미, 여러 문자가 연결된 형태
- 문자 단위의 배열이며, 각 문자가 1바이트 이상의 메모리를 차지할 수 있음
- 예: 영문 문자는 1바이트씩 차지하지만, 유니코드 기반 한글 문자는 2~3바이트를 차지한다.
ASCII와 바이트, String 간의 관계
- ASCII: 문자를 숫자로 변환해주는 코드
- 바이트: ASCII 코드 또는 문자들이 차지하는 메모리 단위
- String: 바이트 단위로 연속된 문자를 배열하여 표현하는 텍스트 데이터
ASCII는 문자를 숫자로 변환하는 표준, 바이트는 데이터를 저장하는 단위, String은 문자의 집합
Hexadecimal(16진수) vs Hex String의 차이
- Hexadecimal
- 숫자 형식으로, 값 자체가 16진수로 표현된 수이다.
- 주로 수학적 계산에서 사용될 수 있다.
- 예: 0X1A3(419를 나타내는 16진수 값)
- Hex String
- 문자열 형식으로, 16진수의 각 자릿수를 문자 형태로 다룬다.
- 계산보다는 데이터를 문자열로 표현할 때 사용된다.
- 예: "1A3"(16진수 값을 문자로 표현한 문자열)
BCD 코드
BCD 코드(Binary Coded Decimal)는 10진수 0부터 9까지를 2진화한 코드로 실제 표기는 2진수지만 10진수 처럼 사용되는 코드이다. 즉 0000~1001까지만 사용하고 1010~1111은 사용하지 않는다.
-
BCD의 한 자리는 항상 4비트(0000~1001)로 표현되며, 이는 10진수 0~9에만 해당한다.
-
만약 BCD 한 자릿수가 10 이상이 되면(예: 1010, 1011, ...), 올바른 BCD 값이 아니므로 수정을 해줘야 된다.
-
BCD에서 10을 넘어가는 값을 처리할 때는 6을 더해 자동적으로 캐리를 발생시켜 올바른 자리수로 맞춘다.

6을 더함으로써 캐리지 리턴이 생겨서 자릿수가 넘어감을 볼 수 있다. 6을 더하는 이유는 이진수 4자리는 0 ~ 15까지 표현할 수 있는데 BCD에서는 10~15 안 쓰게 되어 6개를 건너뛰는 게 된다. 그렇기에 9가 넘어가면 임의적으로 6을 더해 계산하게 된다.
Refrence
https://itbeginner2020.tistory.com/17
https://jungreeyoung.tistory.com/entry/BCD%EC%BD%94%EB%93%9C