数据表示——二进制与十进制转换

1. 二进制转十进制

按照数据类型分为三种:无符号的二进制整数有符号的二进制整数小数二进制数

1.1 无符号的二进制整数

计算技巧: 从二进制数的右边第一位起,从右往左,先用二进制位置上的数乘以2的相应位数的幂,然后把每一位的乘积相加即可得到二进制数对应的十进制数。

例如:二进制整数 110,从右往左分别标记位数,0,1,2。(注意,位数从0开始标记),根据二进制位置上的数和位数,产生计算过程数,如下图所示:

位数210
二进制数110
计算过程数1*2^21*2^10*2^0

最后,将计算过程数字求和
1 * 2^2 = 4
1 * 2^1 = 2
0 * 2^0 = 0
最终十进制结果: 4+2+0 = 6。

1.2 有符号的二进制整数

计算技巧: 最高位是符号位(1为负数,0为正数),除去符号位后的剩余位按照无符号的二进制转换方式计算。

例如:有符号的二进制整数1110,符号位(即最高位)是1,则为负数,剩余110按照“1.1章节”方式计算为6,最终十进制结果:-6。

1.3 小数二进制数

计算技巧: 小数分为整数位和小数位。 整数位部分按照“1.1章节”方式计算;小数部分从小数点开始向右标记位置,起始位为-1,以此标记到第-n位结束,然后以二进制小数位上的数乘以2的相应位数的-n次幂。

例如:小数二进制数 110.011,从小数点开始,整数位从右往左,从0到n,求m * 2^n的和;小数位从左往右,从-1到-n,求m * 2 ^-n的和。如下图所示:

位数210--1-2-3
二进制数110.011
计算过程数1*2^21*2^10*2^0-0*2^-11*2^-21*2^-3

最后,将计算过程数字求和
1 * 2^2 = 4
1 * 2^1 = 2
0 * 2^0 = 0
0 * 2^-1 = 0
1 * 2^-2 = 1/4 = 0.25
1 * 2^-3 = 1/8 = 0.125
最终十进制结果:4+2+0+0+0.25+0.125 = 6.375

2. 十进制转二进制

十进制转二进制,分成两个部分,整数和小数。符号就根据计算结果在最高位增加符号位即可(1为负数,0为正数)。

2.1 十进制整数转二进制

计算技巧: 将整数除以2,如果商不为0,取商继续除以2,直至商为0,将余数从下到上列出即为二进制结果。

例如:十进制整数 6 。

十进制整数6余数
除2的商数30
除2的商数11
除2的商数(除不尽直接记101

从下往上取余数,最终二进制结果为110。

2.2 十进制小数转二进制

计算技巧: 将其分为整数和小数两部分,整数部分按照"2.1章节"方式计算;小数部分乘以2取整,如果结果仍有小数继续用小数部分乘2,直到小数部分为0,或者达到精度要求为止,最后将取整部分从上到下即为小数部分的二进制结果。

例如:十进制小数 6.75 ,整数部分按照2.1计算结果为110,小数部分拆分单独计算,即0.75。

十进制小数0.75取整小数部分
乘以21.5010.50
小数部分继续乘以21.0010.00

从上到下取整的二进制结果为11,最终二进制结果为110.11。

2.3 负数转二进制

计算技巧: 在最高位添加符号位(1为负数,0为正数)即可。
例如: -6.75转十进制为1110.11。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值