10진수
- 0~9까지 10개의 숫자를 수로 표현
- 우리가 평소 사용하는 숫자 카운팅 방식
- 원리
- (두 자리수부터 적용)오른쪽 끝이 9일 때: 9 → 0
- 왼쪽 끝이 9일 때: 9 → 0(자신의 자리수는 0으로 되돌림) & 왼쪽 앞에 한 자리수를 추가
- 예시
- 9의 다음 수: 왼쪽 끝이 9이므로 0으로 만들고, 왼쪽 앞에 한 자리수를 추가하여 10
- 19의 다음 수: 오른쪽 끝이 9이므로 0으로 만들고, 왼쪽 끝이 1이므로 다음 단위인 2로 바꿔주어 20
- 99의 다음 수: 오른쪽 끝이 9이므로 0으로 만들고, 왼쪽 끝이 9이므로 자신의 자리수는 0으로 만들고 그 앞에 한 자리수를 추가하여 100
- 각 자리는 10의 거듭제곱
- 예시 설명
- 573 = 5 x 100 + 7 x 10 + 3 x 1 = 5×10² + 7×10¹ + 3×10⁰(어떤 수든 0승은 1이다)
2진수
- 0과 1 두 개의 숫자만으로 수를 표현
- 원리
- 오른쪽 끝이 0 → 1
- 오른쪽 끝이 1 → 0 & 옆자리로 1 넘김
- 예시
- 100의 다음 수: 오른쪽 끝이 0이므로 101
- 101의 다음 수: 오른쪽 끝이 1이므로 먼저 0으로 만들고, 옆자리로 1을 넘겨 110
16진수
- 0
9와 A
F까지 16개의 숫자로 수를 표현
- 한 자리수로 0~15를 나타낼 수 있음
- 0~50까지 10진수와 16진수의 대응표10진수 16진수
0 |
0 |
1 |
1 |
2 |
2 |
3 |
3 |
4 |
4 |
5 |
5 |
6 |
6 |
7 |
7 |
8 |
8 |
9 |
9 |
10 |
A |
11 |
B |
12 |
C |
13 |
D |
14 |
E |
15 |
F |
16 |
10 |
17 |
11 |
18 |
12 |
19 |
13 |
20 |
14 |
21 |
15 |
22 |
16 |
23 |
17 |
24 |
18 |
25 |
19 |
26 |
1A |
27 |
1B |
28 |
1C |
29 |
1D |
30 |
1E |
31 |
1F |
32 |
20 |
33 |
21 |
34 |
22 |
35 |
23 |
36 |
24 |
37 |
25 |
38 |
26 |
39 |
27 |
40 |
28 |
41 |
29 |
42 |
2A |
43 |
2B |
44 |
2C |
45 |
2D |
46 |
2E |
47 |
2F |
48 |
30 |
49 |
31 |
50 |
32 |
10진수 → 2진수
필요한 경우
- 서브넷 마스크 계산
- 예: 255.255.255.240을 2진수로 바꿔야 몇 비트가 네트워크/호스트인지 알 수 있음
- IP 주소와 서브넷 비교
- 어떤 IP가 같은 네트워크에 속하는지 판별하려면 10진수를 2진수로 바꿔 AND 연산해야 함
- 브로드캐스트 주소, 네트워크 주소 계산
- 호스트 비트 판별이 전부 2진수에서 이뤄짐
방법: “255.255.255.0을 2진수로 바꿔보자”
- 첫 번째: 2진수 8자리의 자리값으로 구하기
- IPv4는 점으로 나뉜 4개의 10진수(0~255)로 되어 있고, 각 칸(옥텟)은 8비트( WHY? 2진수 기준으로 한 개의 숫자당 1비트 차지, 점을 기준으로 한 칸에 8개의 자리수가 됨)
- 때문에 10진수 상태인 각 칸을 2진수 8자리로 바꾸면 됨
- 128 64 32 16 8 4 2 1
- 해당 10진수에서 위 값을 큰 것부터 뺄 수 있으면 1, 못 빼면 0을 적음(일명 가중치/자리값 방법)
- 255를 위 자리값으로 깎아보자(첫 번째~세 번째 옥텟 동일):
- 255 ≥ 128 → 1, 남은 값 127
- 127 ≥ 64 → 1, 남은 값 63
- 63 ≥ 32 → 1, 남은 값 31
- 31 ≥ 16 → 1, 남은 값 15
- 15 ≥ 8 → 1, 남은 값 7
- 7 ≥ 4 → 1, 남은 값 3
- 3 ≥ 2 → 1, 남은 값 1
- 1 ≥ 1 → 1, 남은 값 0⇒ 결과 비트: 11111111
- 0(네 번째 옥텟)
- 0 ≥ 128? 아니오 → 0
- 0 ≥ 64? 아니오 → 0
- …
- 0 ≥ 1? 아니오 → 0⇒ 결과 비트: 00000000
- 0은 어느 자리값도 뺄 수 없다:
- 옥텟을 이어 쓰면 11111111.11111111.11111111.00000000
- 두 번째: 2로 나누기
- 255 ÷ 2 = 127 …1
- 127 ÷ 2 = 63 …1
- 63 ÷ 2 = 31 …1
- 31 ÷ 2 = 15…1
- 15 ÷ 2 = 7 …1
- 7 ÷ 2 = 3 …1
- 3 ÷ 2 = 1 …1
⇒ 결과 비트: (밑에서 위로 역순 읽기) 11111111
2진수 → 10진수
필요한 경우
- IP 주소 해석
- IP나 서브넷 마스크를 2진수로 표현한 뒤, 사람이 이해하기 위해 다시 10진수로 변환 예: 11000000.10101000.00000001.00000001 → 192.168.1.1
- 네트워크 주소 계산
- 비트연산으로 나온 결과는 2진수라, 최종적으로는 10진수로 변환해서 네트워크 주소, 브로드캐스트 주소를 확인해야 함
방법
- 111111111= 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
- = 255
- 1×2⁷ + 1×2⁶ + 1×2⁵ + 1×2⁴ + 1×2³ + 1×2² + 1×2¹ + 1×2⁰
- 2의 0승부터 포함하므로 2진수의 자리수에서 1을 뺀 만큼부터 거듭제곱을 시작한다.
- 11111111 은 8자리이므로 2의 7승부터 시작