진법전환.

코딩을 알기 이전

컴퓨터 공학과들은 전부 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 변환

  1. 2진수 101010을 뒤에서부터 3자리씩 끊어준다

    101010 -> 101 / 010

  2. 나눈 숫자를 합한다.

    101 -> 5

    010 -> 2

  3. 앞자리부터 차례대로 써 준다.

    52

8진수 -> 2진수 변환

  1. 8진수 52를 하나씩 끊어준다

    52 -> 5 /2

  2. 각 숫자를 이진법으로 변경한다

    5 -> 101

    2 -> 010

  3. 앞자리부터 차례대로 써 준다

    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 변환

  1. 2진수를 뒤에서부터 4자리씩 끊어준다

    11100 -> 0001 / 1100

  2. 각 숫자를 10진수로 변환한다

    0001 -> 1

    1100 -> 12

  3. 숫자에 대응되는 16진수 값으로 변환한다 1 -> 1

    12 -> C

  4. 앞자리부터 차례대로 써 준다

    0x1C

    (0x는 16진수라는 것을 나타낸다)