1. 10진법과 2진법
우리가 일상생활에서 주로 사용하는 것은 10진법이다. ex) 0~9까지의 수
그러나, 컴퓨터는 2진 체계로 설계되었기에 아래와 같이 10진수가 아닌 2진수로 바꾸어 저장한다.
int age = 25; // 변수 age에 11001[2](25[10])를 저장
이처럼 2진법은 0과 1로만 데이터를 표현하기에 10진수에 비해 많은 자릿수를 필요로 한다.
* 10진수 2와 같이 작은 숫자도 2진수로 표현하려면 2자리가 필요하다. ex) 10 [2]
2. 비트(bit)와 바이트(byte)
한 자리의 2진수를 '비트(bit, Binary digit)'라고 하며, 1비트는 컴퓨터가 값을 저장할 수 있는 최소 단위이다.
그러나, 1비트는 너무 작은 단위이기 때문에 1비트 8개를 묶은 '바이트(byte)'를 기본 단위로 사용한다.
n비트로 표현할 수 있는 10진수
값의 개수 : 2ⁿ
값의 범위 : 0 ~ 2ⁿ-1
이 외에도 '워드(word)'라는 단위가 있는데, 'CPU가 한 번에 처리할 수 있는 데이터의 크기'를 의미한다.
* 32bit CPU에서 1 워드는 32비트(4바이트), 64bit CPU에서 64비트(8바이트)이다.
3. 8진법과 16진법
2진법은 오직 0과 1로만 값을 표현하기에 자릿수가 상당히 길어진다는 단점이 있다.
이러한 단점을 보완하기 위해 8진법이나 16진법을 사용한다.
8진수는 2진수 3자리를, 16진수는 2진수 4자리를 각각 한 자리로 표현할 수 있기에 자릿수가 짧아져서 알아보기 쉽고 서로 간의 변환 방법 또한 매우 간단하다.
ex) 1010101100 [2] = 684 [10]
- 8진법 변환 : 숫자를 뒤에서부터 3개로 묶는다.
001 [2] / 010 [2] / 101 [2] / 100 [2]
1 / 2 / 5 / 4 →1254 [8]
- 16진법 변환 : 숫자를 뒤에서부터 4개로 묶는다.
0010 [2] / 1010 [2] / 1100 [2]
2 / A / C → 2AC [16]
참고문헌 : 남궁성(2016), Java의 정석, 도우출판