基本思想:

恢复余数法,当余数为负数(即最高为1时,为负数)时,需要加上除数,

将其恢复成原来的余数,而商值的大小是通过比较被除数和除数的绝对值的大小确定的。

 

步骤示例:

例题:

已知x=-0.1011,y=-0,1101,求[x/y]原?

已知x=-0.1011,y=-0,1101,求[x/y]原?			
[-y*]=-0.1101,[-y*]补=1.0011,[y*]=0.1101
被除数                          商                                      操作
   0.1011                    0.0000                               +[-y*]补
+ 1.0011
--------------------------------------------------------------------------------------------------------------------
   1.1110                        0                               余数为负数,上商0;
 +0.1101                                                         +[y*];//(记住当余数是负数的时候,只需要恢复余数正数即可);
--------------------------------------------------------------------------------------------------------------------
   0.1011                        0                                这是刚恢复后的余数;//才记住恢复后的余数,不能商1记住切记切记;
   1.0110                                                          <<向左移一位;
+ 1.0011                                                        +[-y*]补;//此时恢复后的余数为0.1011为正数,需要+[-y*]补;
--------------------------------------------------------------------------------------------------------------------
    0.1001                       01                            此时余数为正数,上商1;
    1.0010                                                        <<向左移一位;
+  1.0011                                                        +[-y*]补;//只要余数是正数,则都需要进行+[-y*]补;
--------------------------------------------------------------------------------------------------------------------
    0.0101                       011                           此时余数为正数,上商1;
    0.1010                                                          <<向左移一位;
+  1.0011                                                         +[-y*]补;//余数是正数,需要进行+[-y*]补;
--------------------------------------------------------------------------------------------------------------------
    1.1101                       0110                         余数为负数,上商0;
+  0.1101                                                         +[y*];
-------------------------------------------------------------------------------------------------------------------- 
    0.1010                       0110                       这是刚恢复后的余数;//才记住恢复后的余数,不能商1记住切记切记
    1.0100                                                        <<向左移一位;
 + 1.0011                                                        +[-y*]补;此时余数为正数;
--------------------------------------------------------------------------------------------------------------------
    0.0111                       01101                       此时余数为正数,上商1;此时的商的位数与之前给出的商(00000)位数相同,则停止运算。
所以商的值为0.1101,确定商的符号位需要进行异或运算(异或运算,口诀,同为0,异为1);
异或运算: x@y=1@1=0;
所以商为正数!即[x/y]原=[x/y]补;

一定要注意这两步骤

1.刚从负数恢复成正数的余数,切记不可上商1;

2.对负数进行恢复时,不能进行移位操作;

 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐