x * y = z
讨论已知x和y的情况下,怎么通过补码一位乘法方法得出z~
首先说下运算规则~
- 和原码一位乘法不同的是,补码一位乘法的符号位是参加运算的~运算的所有的数包括得到的结果z都是补码的形式~
- 被乘数x取双符号参与运算,部分积的初值为0~~乘数y取单符号位~
- 乘数y末尾首先要增加一个附加位0,每次讨论的是y的最后两位~但是每次移动是移动一位哦~
- 判断y的最后两位的时候,遵循这样的规则:
- 为00或者为11的时候,直接右移一位
- 为01的时候,加x的补,然后右移一位
- 为10的时候,加-x的补,然后右移一位
5. 不过有个特例,就是最后一步不用右移一位!
举个栗子~(啊啊啊栗子真的好好吃…)
比如x = -0.1101,y=0.1011
先写出x的补码:[x]补 = 11.0011,再写出-x的补码:[-x]补 = 00.11