二进制与十进制间的转化

二进制与十进制


二进制

权值:2n … 23 22 21 20 2-1 2-2 … 2-n

注意:整数位是2n … 23 22 21 20 ,这里是从0开始的;

小数位为 2-1 2-2 … 2-n ,是从-1开始的。

十进制

权值: 10n … 102 101 100 10-1 10-1 …10-n

1、十进制转二进制

整数部分

方法:除2取余

原理:假如数A(10) , 对应gfedcba(2) ,则 A = a*20 + b*21 +c*22 +d*23 + e*24 + f*25 + g*26 ,要从A(10)得到其二进制,就是求出gfedcba(2) ,当A/2,在a*20 + b*21 +c*22 +d*23 + e*24 + f*25 + g*26 中b、c、d、e、f、g 所在的项能被2整除,a 所在的项无法被2整除,故取余后得到的就是a ,依此继续除2取余,即可得到b、c、d、e、f、g(注意除2取余依次求得是 abcdefg 而其对应二进制应该反过来,为gfedcba)。

例如:307(10) ,求其二进制数
307 ÷ 2 = 153 余 1 153 ÷ 2 = 76 余 1 76 ÷ 2 = 38 余 0 38 ÷ 2 = 19 余 0 19 ÷ 2 = 9 余 1 9 ÷ 2 = 4 余 1 4 ÷ 2 = 2 余 0 2 ÷ 2 = 1 余 0 1 ÷ 2 = 0 余 1 307\div2 = 153 \quad 余1\\ 153\div2 = 76 \quad 余1\\ 76\div2 = 38 \quad 余0\\ 38\div2 = 19 \quad 余0\\ 19\div2 = 9 \quad 余1\\ 9\div2 = 4 \quad余1\\ 4\div2 = 2 \quad 余0\\ 2\div2 = 1 \quad 余0\\ 1\div2 = 0 \quad余1 307÷2=1531153÷2=76176÷2=38038÷2=19019÷2=919÷2=414÷2=202÷2=101÷2=01
自下而上,十进制307对应二进制为100110011

快速求解方法(适用十进制255及更小的数,求其二进制):我们知道二进制整数部分权值为 20 21 22 23 … ,即1,2,4,8,16,32,64,128… ,那么我们在算十进制135对应的二进制时,就能直接把135 = 128 + 4 + 2 + 1 直接对应其二进制,128 是二进制第 8 位的权值,4 是二进制第 3 位的权值,2 是二进制第 2 位的权值, 1 是二进制第 1 位的权值,那么十进制 135 对应的二进制值就为 10000111 。一般可用这种方法算8位二进制以内的数,也就是255内的数。当然要算更大的数也可以用这种方法,但显得更麻烦了,这时我们还不如用一般方法。

一般方法
在这里插入图片描述
故十进制32对应的二进制为100000

小数部分

方法:乘2取整

原理:假如数0.A(10) , 对应0.gfedcba(2) ,则 A = a*2-1 + b*2-2 +c*2-3 +d*2-4 + e*2-5 + f*2-6 + g*2-7 ,要从0.A(10)得到其二进制,就是求出0.gfedcba(2) ,当A*2,在 a*2-1 + b*2-2 +c*2-3 +d*2-4 + e*2-5 + f*2-6 + g*2-7 中只有 a 所在的项乘2后得到结果大于或等于0,故提到小数点前面,即a*2-1*2 = a 提到小数点前面,所以依此乘2取整,就能得到a、b、c、d、e、f、g。

例如:0.375(10) ,求其二进制数
0.375 × 2 = 0.75 取 整 0 0.75 × 2 = 1.5 取 整 1 0.5 × 2 = 1.0 取 整 1 0.375\times2 = 0.75 \quad 取整0\\ 0.75\times2 = 1.5 \quad 取整1\\ 0.5\times2 = 1.0 \quad 取整1 0.375×2=0.7500.75×2=1.510.5×2=1.01
自上而下,十进制0.375对应的二进制为0.011

2、二进制转十进制

整数和小数部分

方法:二进制数值依次乘对应权值,再求和

原理:可以用逆向思维分析十进制转二进制,既然十进制整数转二进制是除2取余,那反过来二进制整数转十进制就是从最左边开始乘2加上余数;

整数:二进制数100110011,求其对应十进制数(结果为307)
( 左 边 第 一 个 数 1 开 始 ) 0 × 2 + 1 = 1 1 × 2 + 0 = 2 2 × 2 + 0 = 4 4 × 2 + 1 = 9 9 × 2 + 1 = 19 19 × 2 + 0 = 38 38 × 2 + 0 = 76 76 × 2 + 1 = 153 153 × 2 + 1 = 307 (左边第一个数1开始)\\ 0\times2 + 1 = 1\\ 1\times2 + 0 = 2\\ 2\times2 + 0 = 4\\ 4\times2 + 1 = 9\\ 9\times2 + 1 = 19\\ 19\times2 + 0 =38\\ 38\times2 + 0 = 76\\ 76\times2 + 1 =153\\ 153\times2 + 1 = 307 (1)0×2+1=11×2+0=22×2+0=44×2+1=99×2+1=1919×2+0=3838×2+0=7676×2+1=153153×2+1=307
二进制小数转十进制就是从最右边除2,将得到的值加上取整的数再除2,直到取到二进制数的最左边数。

小数:二进制数0.011对应的十进制数(结果为0.375)
( 右 边 第 一 个 数 1 开 始 ) ( 1 + 0 ) ÷ 2 = 0.5 ( 1 + 0.5 ) ÷ 2 = 0.75 ( 0 + 0.75 ) ÷ 2 = 0.375 (右边第一个数1开始)\\ (1+0)\div2 = 0.5\\ (1+0.5)\div2 = 0.75\\ (0+0.75)\div2 = 0.375 (1)(1+0)÷2=0.5(1+0.5)÷2=0.75(0+0.75)÷2=0.375
一般方法:例如求二进制100110011.011对应的十进制

整数部分:

1*20 + 0*21 + 0*22 + 1*23 + 1*24 + 0*25 + 0*26 + 1*27 + 1*28 = 307

小数部分:

0*2-1 + 1*2-2 + 1*2-3 = 0.375

故合起来,二进制100110011.011对应的十进制为 307.375

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦年华a

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值