补码的一位乘法
今天学了补码的一位乘法,还是上例子来讲🙃
eg:已知X=+1101,Y=+1011,用补码一位乘法求X*Y。
首先,求出补码→[X]补=01101,[Y]补=01011
方法一:按照原码的一位乘法的方式,根据乘数Y来判断加0还是加|X|,而部分积的初始值为0,但是我们一般用双符号位计算,所以0的个数就是补码的位数5+1,即6位数。
这里面有个注意点,如果乘数Y是正数,最后的结果就不需要校正,如果Y是负数,算到最后一步之后要加上[-X]补来校正,所以更推荐方法二啦~
方法二:根据Yn+1和Yn的大小来判断部分积是加0还是[-X]补或[X]补😔
若Yn+1<Yn,部分积+[-X]补,
若Yn+1=Yn,部分积+0,
若Yn+1>Yn,部分积+[X]补。
这里的初始Yn+1,
我们在乘数的后面补一个0😬
这里面要注意的就是符号位的进位要自然丢掉呀!