十进制转二进制(等)倒数取余法的原理
十进制转二进制(等)倒数取余法的原理
我们知道:十进制转二进制(八进制等)的方法是倒数取余法,但很多同学只是死记硬背, 并不理解为什么这么做.
让我们用下面的例子来理解一下:
-
把十进制数字17转换为二进制
- 首先把17分解为$2^n$之和:$17 = 1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^ 0$.
- 显然,在这个分解式中,每个$2^n$的系数(0或1),恰恰对应了二进制第n+1位的数字, 所以17对应的二进制写法是: 0b 0000 1001.
- 那么, 当我们把等式两边除以2的时候,除了最右侧的项$1 * 2^0$,都能被2整除. 因此, 我们得到的余数(即这一项的系数1)就是二进制右侧第1位的数字.
- 而此时等式则变成了 $8 = 1 * 2^2 + 0 * 2^1 + 0 * 2^0$ . 两侧都自动去掉了余数.
- 所以, 继续除以2, 就能逐次把最右侧项消除, 并得到其系数. 而如我们第二步所述, 这个系数, 就是二进制每一位的数字. 这就是倒数取余法的原理了.
十进制转八进制等也是同样的原理. over~
作者: 练块儿的程序员
出处:https://www.cnblogs.com/sunyujun16
本文版权归作者和博客园共有,欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文链接, 如有问题,可邮件sunyujun16@163.com咨询.