一:十进制转二进制(D-->B)
整数部分:除二取余(直到除数为0),自下而上
小数部分:乘二取整(直到小数部分为0),自上而下
例如:(107.24)D=(?)B
(我的字就是会莫名其妙地自己跑歪了,和本人没有关系(bushi )
二:二进制转十进制
按权相加:
例如:(1000101.0011)B=(?)D
三:二进制正数求负数&二进制负数求正数
首先:计算机只会做加法运算(减法运算也是由加法运算完成的)
法则:正数的补码是该正数的负数,负数的补码是该负数的正数(正/负数通过求自己的补码得到自己的负/正数)
那么为什么呢?
我们都知道:
正数的原码的最高符号位是0,反码是原码取反、补码是反码+1,移码是补码的最高符号位取反(移码在这里用不到)
负数的原码的最高符号位是 1,反码是原码取反,补码是反码+1,移码是补码的最高符号位取反(移码在这里用不到)
例如:(13)D = (0000 1100)B
原码:0000 1100 (13的原码)
反码:1111 0011
补码:1111 0100
移码:0111 0100
根据法则可以得知:(-13)D的原码是(13)D的补码=(1111 0100)B
反码:0000 1011
补码:0000 1100
可以得到(-13)D的补码是(13)D的原码。
四:二进制与二进制的算术计算
首先:计算机只会做加法运算(减法运算也是由加法运算完成的)
法则:逢二进一 (两个1相加就要往前进一位)
例如:(0001)B + (0001)B = (0010)B
(0011 1111)B + (0100 0001)B = (1000 0000)B
那如果是求A-B呢?通过第四条法则: 正数的补码是该正数的负数,负数的补码是该负数的正数(正/负数通过求自己的补码得到自己的负/正数)
可以知道:A-B = A+(-B)
所以:(0011) - (1100) = (0011)+ (1100)的补码
(1100)反码=(0011)
补码=(0100)
即:(0011) - (1100) = (0011)+ (1100)的补码=(0011)+(0100)=(0111)