진법전환.
코딩을 알기 이전
컴퓨터 공학과들은 전부 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진수라는 것을 나타낸다)