진법전환.
코딩을 알기 이전
컴퓨터 공학과들은 전부 2진법으로 숫자를 세는 줄 알았고
정말 이상한 숫자체계라고 생각했는데 …
이걸 공부하고 있으려니 감회가 새로웠다네요.
2진수와 10진수의 표기
2진수 | 00101010 | 01110110 | 01011000 |
10진수 | 42 | 118 | 88 |
2진수 -> 10진수 변환
2진수 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
자릿수 | 2^7 | 2^6 | 2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
10진수 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
오른쪽부터 한자리씩 높아질수록 승수가 1씩 높아진다.
1로 표시된 부분들끼리 더해주면 10진수로 표현하는 숫자가 등장함.
상단 부분은 2 + 8 + 32 이므로 42를 표현하는 숫자가 되겠다.
10진수 -> 2진수 변환
나누는 수 | 나눌 수 | 나머지 |
---|---|---|
2 | 42 | |
2 | 21 | …0 |
2 | 10 | …1 |
2 | 5 | …0 |
2 | 2 | …1 |
2 | 1 | …0 |
나머지 연산으로 나눗셈을 진행한 후,
마지막으로 나누어진 수와 나머지 부분을 더하면 이진법으로 변환할 수 있다.
42가 101010(2) 으로 변환됨
2진수와 8진수의 표기
2진수 | 00101010 | 00010101 | 00011111 |
8진수 | 52 | 25 | 23 |
2진수 -> 8진수 변환
8진수 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
자릿수 | 8^7 | 8^6 | 8^5 | 8^4 | 8^3 | 8^2 | 8^1 | 8^0 |
10진수 | 2,097,152 | 262144 | 32768 | 4096 | 512 | 16 | 8 | 0 |
11101 변환
-
2진수 101010을 뒤에서부터 3자리씩 끊어준다
101010 -> 101 / 010
-
나눈 숫자를 합한다.
101 -> 5
010 -> 2
-
앞자리부터 차례대로 써 준다.
52
8진수 -> 2진수 변환
-
8진수 52를 하나씩 끊어준다
52 -> 5 /2
-
각 숫자를 이진법으로 변경한다
5 -> 101
2 -> 010
-
앞자리부터 차례대로 써 준다
101010
2진수와 16진수의 표기
2진수 | 1010 | 1011 | 1100 | 1101 | 1110 | 1111 | 10000 | 10001 |
10진수 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
16진수 | A | B | C | D | E | F | 10 | 11 |
16진수는 숫자에 A ~ F까지 6개의 문자를 추가해 수를 표현하는 방식이다.
2진수 -> 16진수 변환
11100 변환
-
2진수를 뒤에서부터 4자리씩 끊어준다
11100 -> 0001 / 1100
-
각 숫자를 10진수로 변환한다
0001 -> 1
1100 -> 12
-
숫자에 대응되는 16진수 값으로 변환한다 1 -> 1
12 -> C
-
앞자리부터 차례대로 써 준다
0x1C
(0x는 16진수라는 것을 나타낸다)