如何对二进制进行编码?

如题所述

在乘法器中,波兹编码广泛使用。(以例子来说明)

例如,X=(101101),Y=(011010)
1.无符号数情况:X=45,Y=26,X*Y=1170
得到的三个部分积为:
(对Y编码后的第一项-2X)对应:(1111_1010_0110)。方法:先对X扩充到12位(无符号数在前面补0,有符号数在前面补1,切记)得(0000_0010_1101),然后向左移1位得到2X(0000_0101_1010),最后求反,加1(最后一步相当于求补运算);
(对Y编码后的第二项-X)对应:(11_1101_0011)。方法:先对X扩充到10位(无符号数在前面补0,有符号数在前面补1,切记)得(00_0010_1101),最后求反,加1(最后一步相当于求补运算);
(对Y编码后的第三项2X)对应:(0101_1010)。方法:先对X扩充到8位(无符号数在前面补0,有符号数在前面补1,切记)得(0010_1101),然后向左移1位得到2X;
将得出来的三个部分积进行对应相加(依次错开两位),仅取12位结果得到1170。
2.有符号数情况:X=-19(不是-13),Y=26,X*Y=-494
得到的三个部分积为:
(对Y编码后的第一项-2X)对应:(0000_0010_0110)。方法:先对X扩充到12位(无符号数在前面补0,有符号数在前面补1,切记)(1111_1110_1101),然后向左移1位得到2X(1111_1101_1010),最后求反,加1(最后一步相当于求补运算);
(对Y编码后的第二项-X)对应:(00_0001_0011)。方法:先对X扩充到10位(无符号数在前面补0,有符号数在前面补1,切记)得(11_1110_1101),最后求反,加1(最后一步相当于求补运算);
(对Y编码后的第三项2X)对应:(1101_1010)。方法:先对X扩充到8位(无符号数在前面补0,有符号数在前面补1,切记)得(1110_1101),然后向左移1位得到2X;
将得出来的三个部分积进行对应相加(依次错开两位),仅取12位结果得到-494。
温馨提示:答案为网友推荐,仅供参考
相似回答