컴퓨터는 0과 1로 모든 정보를 표현하고, 0과 1로 표현된 정보만을 이해할 수 있다.
그리고 이렇게 0과 1로 표현되는 정보에는 크게 데이터(data)
와 명령어(instruction)
가 있다.
데이터
비트(bit)
: 0과 1을 나타내는 가장 작은 정보 단위
⬇ 프로그램의 크기를 말할 때 사용하는 표현⬇
바이트(byte)
== 8비트
1 킬로바이트(kB)
== 1,000바이트
1 메가바이트(MB)
== 1,000킬로바이트
1 기가바이트(GB)
== 1,000메가바이트
1 테라바이트(TB)
== 1,000기가바이트
워드(word)
: CPU가 한 번에 처리할 수 있는 데이터 크기
⬇
하프 워드(half word)
: 워드의 절반크기
풀 워드(full word)
: 워드의 1배 크기
더블 워드(double word)
: 워드의 2배 크기
표기 방법
① ex) 1000(2)
② ex) 0b1000
음수 표현
❗ 1의 보수 : 모든 이진수의 1과 0을 뒤집은 수
❗ 2의 보수 : 1의 보수에 1을 더한 값
❗ 플래그(flag) : 컴퓨터 내부에서 이 수가 양수인지 음수인지를 구분하기 위해 사용하는 것
2의 보수 표현의 한계
0을 음수로 표현하기
0000 ➡(모든 수 뒤집기) 1111 ➡(1을 더하기) 10000
❗ 이런 경우 자리 올림이 발생한 비트의 1을 버린다.
2³을 음수로 표현하기
1000 ➡(모든 수 뒤집기) 0111 ➡(1을 더하기) 1000
❗ 이런 경우 음수가 자기 자신의 되버리는 경우는 본질적으로 해결하기 힘들다.
❗ 즉, n비트로틑 -2ⁿ과 2ⁿ을 동시에 표현할 수 없다.
표기 방법
① 수학적 표기 방식 : 15(16)
② 코드상 표기 방식 : 0x15
십육진수를 이진수로 변환
ex) 1A2B
⬇각 자리를 이진수로 변환⬇
- 1 == 0001(2)
- A == 1010(2)
- 2 == 0010(2)
- B == 1011(2)
즉 1A2B(16) = 0001101000101011(2)
문자 집합(character set)
: 컴퓨터가 인식하고 표현할 수 있는 문자의 모음
문자 인코딩(character encoding)
: 문자를 0과 1로 변환하는 과정
문자 디코딩(character decoding)
: 0과1로 이루어진 문자 코드를 문자로 변환하는 과정
한글 인코딩 : 완성형 vs 조합형 인코딩
①완성형 : 홍 + 길 + 동
②조합형 : ㅎ + ㅗ + ㅇ
EUC-KR
유니코드
UTF-8 인코딩