이진수와 십진수 share
중학교 때 배운 후, 잊어 버리고, 매번 필요할 때마다 찾아 보는 것이 진법(進法)이다. 요즘은 교과 과정이 없어졌다고 하지만, 자녀들이 물어볼 때를 대비해 기록해 놓는다. 또, 개발자로서 이진법을 잘 이해하지 못하고 있는 나 자신이 부끄럽기도해서 필요할 때마다 꺼내볼 수 있도록 치트시트를 만들어 두는 거다.
• • •
십진수 to 이진수 (decimal to binary)
- 주어진 십진수를 2로 계속 나누어 몫을 기록한다. 나누어 지지 않는 나머지 1은 버린다.
- 몫의 끝자리 수가 짝수이면 0, 홀수이면 1로 표시한다.
- 뒤에서 앞으로 0과 1을 조합한다.
684, 342, 171, 85, 42, 21, 10, 5, 2, 1
0, 0, 1, 1, 0, 1, 0, 1, 0, 1
십진수 684는 이진수로 1010101100 이다.
$ python
>>> bin(684)
'0b1010101100'
이진수 to 십진수 (binary to decimal)
- 이진수의 자릿수를 구한다. 자릿수는 0부터 시작한다.
- 이진수의 값이 1일때만, 2에 자릿수만큼 제곱근한다.
- 전체를 더한다.
자릿수 9 8 7 6 5 4 3 2 1 0
이진수 1 0 1 0 1 0 1 1 0 0
2^9 + 2^7 + 2^5 + 2^3 + 2^2 = 684
$ python
>>> int(0b1010101100)
684