一. 运算规则
注:逻辑移动 : 变符号位
算数移动 : 符号位不变
二. 加法
注:我们在算负数的补码的时候,是符号位不变,剩下的取反加一
但是在算 [-x] 的补码的时候,所有位都要取反
例:
三. 乘法
注:部分积从0.0000开始,然后从双下划线开始乘A,之后与之前的部分积相加,然后右移一位,溢出的部分补到乘数去
例:第一步的双下划线是1,1 * A = 0.1101,与之前的0.0000相加,就是0.1101,然后右移一位,就变成了0.0110,多出来的1去了乘数的部分。最后等乘数全变成了1111,答案就是 0.1000 1111
注:最后求原码的时候要把符号补上
四. 两位数的乘法
注:乘数是010,但这是乘1,所以乘x就是000.111111,与之前的相加就是000.111111,然后右移两位。
这个时候乘数是100,就是乘2,也就是x左移一位,x变成001.111110,与之前的相加,得到010.001101。
然后右移两位变成000.100011。
乘数变成110,就是乘3,也就是减1,也就是加 [-x],求[-x]的补码就是给x所有取反+1,就是111.000001,然后相加得到111.100100。
这个时候得到的数是负数,右移两位是最高位补1,就是111.111001,乘数变成001,一倍的x,相加就是000.111000,乘数是000111,最后的答案就是0.111000000111,算上符号就是1.111 000 000 111