二进制运算

(LSS同学请看)

假设N = 11.0101

(一切运算都是二进制表示)

其实N = 11.0101 * 1 -> N = 11.0101 * 20

设红色数字为A,蓝色数字为B(博客上不能标颜色,A是左边长的一串,B是右边2的多少次方那一串)

 

那么如果假设此时A是 1.10101,就代表这个数字串左移了一位,(因为这是二进制)那么也就是进行了除2操作。为了与原来的N相等,那么B就要多乘一个2,然后这个多乘的2就变成B的指数部分加上1,例如20 * 2 = 21, 21 * 2 = 210,注意这一处,不是22,因为这是二进制,所以要将十进制数字变成二进制数字。

所以对于书上的11.0101(此处乘20也就是1被省略) = 0.110101 * 210,也就是先将A左移了两位(也就是除以4,即22),所以右边的B就要乘以4,也就是二进制加1再加1,即:

20 * 2 * 2 = 21 + 1 = 210

 

同理如果0.110101*210 变成了 1.10101 * 21,那么就是A右移了一位(即乘2),所以为了保持相等,B就要除以一个2(也就是指数减去一个1),变成了21

 

同理,对于1.10101 * 21 变成1101.01*2-10,也就是A右移了3位(乘8,即23),所以右边B的指数就要减去3,也就是21指数减去3就是2-2,也就是2-10.

原文地址:https://www.cnblogs.com/pureayu/p/13960989.html