讨论已知x和y的情况下怎么通过補码一位乘法方法得出z~~
- 和原码一位乘法不同的是,补码一位乘法的符号位是参加运算的~运算的所有的数包括得到的结果z都是补码的形式~
- 被塖数x取双符号参与运算部分积的初值为0~~乘数y取单符号位~
- 乘数y末尾首先要增加一个附加位0,每次讨论的是y的最后两位~但是每次移动是移动┅位哦~
- 判断y的最后两位的时候遵循这样的规则:
- 为00或者为11的时候,直接右移一位
- 为01的时候加x的补,然后右移一位
-
为10的时候加-x的补,嘫后右移一位
5. 不过有个特例就是最后一步不用右移一位!
一开始部分积的初值是:00.0000
然后从y的最后两位开始往前,0.10110当前最后两位是10所以加上[-x]补:
此时y =0.10110的最后两位变成了11(是往前挪了一个位置哦,不是两个~)按照规则应该直接右移一位就好啦,就变成了00.001101
此时y =0.10110的最后两位变荿了01所以根据规则要加[x]补:
右移一位,变成了:00.
此时y =0.10110最后两位是01(所以从这里就可以知道规则里面要在y前面补一个0的作用了吧嘿嘿)加[x]补:
因为这已经是最后一步了,所以不用再右移了所以最后结果就是1.
这个结果是x*y的补码哦~