숫자 체계는 2개로 구성되어있다.
- Base or Radix value : 진수를 의미하며, 값에 따라서 진수가 달라진다. 10진수, 2진수 등
- Set of coefficients : 한 digit안에 들어가는 숫자의 집합을 의미한다.
우리는 일상생활에서 10진수 체계를 사용한다. 10진수는 아래와 같이 정의할 수 있다.
- Base : 10
- Set of coefficients : {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
- 진수 체계 :
위와 같은 규칙들을 통해 우리는 숫자 체계를 일반화 할 수 있다.
r진수 체계는
- Base : r
- Set of coefficients : {0, 1, 2, ... , r-1}
비트(bit)는 앞에서 말한 것처럼 이진 자릿수를 의미함. 이런 bit가 8개 합쳐진 것을 byte라고 부르며, N개의 비트는 0부터 2^N-1까지 나타낼 수 있음. 우리가 흔히 1000bit == 10^3bit == 1KB로 알고 있는데, 실제로는 2^10bit == 1024bit == 1KB이기 때문에, 저장장치의 용량을 볼 때 실제와 차이가 나는 경우가 종종 있음.
더하기는 간단하다. 이진수 체계에서 더하기는 carry와 sum을 가지는데, carry는 다음으로 넘기는 숫자를 의미하고, sum은 결과를 의미한다.
| A | B | CARRY | A+B |
|---|---|---|---|
| 0 | 0 | 0 carry | 0 |
| 0 | 1 | 0 carry | 1 |
| 1 | 0 | 0 carry | 1 |
| 1 | 1 | 1 carry | 0 |
빼기 또한 간단하다. 이진수 체계에서 더하기는 borrow와 difference를 가지는데, borrow는 부족하여 빌려오는 숫자를 의미하고, difference는 결과를 의미한다.
| A | B | BORROW | A-B |
|---|---|---|---|
| 0 | 0 | 0 borrow | 0 |
| 0 | 1 | 1 borrow | 1 |
| 1 | 0 | 0 borrow | 1 |
| 1 | 1 | 0 borrow | 0 |
곱하기는 자릿수마다 곱하면 된다.
1011 X101 ㅡㅡㅡ 1011 0000 1011 110111
41을 2진수로 변환해보자
41/2 = 20 ... 1 -> a0 = 1
20/2 = 10 ... 0 -> a1 = 0
10/2 = 5 ... 0 -> a2 = 0
5/2 = 2 ... 1 -> a3 = 1
2/2 = 1 ... 0 -> a4 = 0
1/2 = 0 ... 1 -> a5 = 1
a5a4a3a2a1a0 = 101001
153을 8진수로 변환해보자
153/8 = 19 ... 1 -> a0 = 1
19/8 = 2 ... 3 -> a1 = 3
2/8 = 0 ... 2 -> a2 = 2
a2a1a0 = 231
0.6875를 2진수로 변환해보자
0.6875*2 = 1 + 0.375 -> a1 = 1
0.375*2 = 0 + 0.750 -> a2 = 0
0.75*2 = 1 + 0.5 -> a3 = 1
0.5*2 = 1 + 0.0 -> a4 = 1
a1a2a3a4 = 0.1011

2진수 101011.101을 8진수로 변환해보자
(101 011).(101)
5 3 . 5 = 53.5
2진수 11110100101011.10100110을 16진수로 변환해보자
(11 1101 0010 1011).(1010 0110)
3 D 2 B . A 6 = 3D2B.A6
100111에서 맨 앞의 1은 2^5값을 가지기 때문에 맨 뒤의 2^0값을 가지는 1과는 큰 차이가 난다.