十进制转二进制(等)倒数取余法的原理

十进制转二进制(等)倒数取余法的原理

我们知道:十进制转二进制(八进制等)的方法是倒数取余法,但很多同学只是死记硬背, 并不理解为什么这么做.

让我们用下面的例子来理解一下:

  • 把十进制数字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咨询.