【C语言】十进制转换二进制 您所在的位置:网站首页 2进制转换10进制c语言怎么写 【C语言】十进制转换二进制

【C语言】十进制转换二进制

2024-06-02 22:12| 来源: 网络整理| 查看: 265

1.短除法 十进制中的数位排列是这样的…… 万 千 百 十 个 十分 百分 千分…… R进制中的数位排列是这样的……R^4 R^3 R^2 R^1 R^0 R^-1 R^-2 R^-3…… 可以看出相邻的数位间相差进制的一次方。 任何进制中,每个数都可以按位权展开成各个数位上的数字乘以对应数位的位权,再相加的形式,如: 十进制的123=1×100+2×10+3×1 十进制的9876=9×1000+8×100+7×10+6×1 问:为啥相应的数位是1000、100、10、1?为啥不是4、3、2、1? 答:十进制,满十进一,再满十再进一,因此要想进到第三位,得有10×10;第4位得有10×10×10 这样我们就知道了: 对10进制,从低位到高位,依次要乘以10^0, 10^1, 10^2, 10^3……,也就是1、10、100、1000 对2进制,从低位到高位,依次要乘以2^0, 2^1, 2^2, 2^3……,也就是1、2、4、8、…… 下面我们开始转换进制(以十进制换成二进制为例): 原来十进制咱们的数位叫 千位、百位、十位…… 现在二进制数位变成了八位、四位、二位…… 模仿上面十进制按位权展开的方式,把二进制数1011按权展开: 1011=1×2^3+0×2^2+1×2^1+1×2^0=1×8+0×4+1×2+1×1=8+2+1=11 接下来我们进行十进制往二进制的转换: 比较小的数,直接通过拆分就可以转换回去 比如13,我们把数位摆好八位、四位、二位,不能写十六了,因为一旦“十六”那个数位上的符号是“1”,那就表示有1个16,即便后面数位上的符号全部是“0”,把这个二进制数按权位展开后,在按照十进制的运算规律计算,得到的数也大于13了。那最多就只能包含“八”这个数位。 13-8=5,5当中有4,5-4=1 好啦,我们知道13=18+14+02+11 把“1”、“1”、“0”“1”这几个符号放到数位上去: 八位、四位、二位、一位 1 1 0 1 于是十进制数13=二进制数1101 2.递归原理 1)一个十进制数321的末尾是1,意味着一定是……+1,省略号部分一定是10的倍数,所以一个十进制数末尾是1意味着十进制数除以进制10一定余1。所以第一次除以10之后的余数,应该放在十进制的最后一个数位“个位”,也就是说个位上的符号是1。 类比,一个二进制数111(注意,数值不等于上面十进制的111)末尾是1,意味着一定是……+1,前面的省略号部分都是2的倍数。所以一个二进制数末尾是1,意味着它对应的十进制数除以进制2一定余1。所以第一次除以2之后的余数,应该放在二进制的最后一个数位“一位”,也就是说一位上的符号是1。 2)如果一个十进制数321“十位”是2,我们希望把它转换为(1)的情况。那么我们把这个十进制数的末尾抹掉,也就是减去“个位”上的1,再除以进制10,得到32。这样原来“十位”上的“2”就掉到了“个位”上。再把32做(1)的处理。 类比,如果一个二进制数111“二位”是1,我们希望把它转换为(1)的情况,那么我们把这个二进制数的末尾抹掉,也就是减去“一位”上的1,再除以进制2,得到11。这样原来“二位”上的“1”就掉到了“一位”上。再把11做(1)的处理。 总结:其实这个过程就是把各个数位上的符号求出来的过程。 现在你应该可以回答以下问题了:为什么短除法可以实现进制的转换呢?为什么每次要除以进制呢?为什么要把余数倒着排列呢? R进制转换成十进制就是按权位展开,把展开式放到十进制下,再按照“十进制”的运算规律计算。因为是十进制,所以就允许使用2、3、4、5、6、7、8、9了。所以2的n次方就不用写成指数,而可以用另外的八个符号来表示了。 十进制—>二进制 对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的商的最后一位余数是所求二进制数的最高位。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有