补码乘法

来源:百度知道 编辑:UC知道 时间:2024/06/21 22:51:57
(0) 1 1 0 1 = + 13
×) (1) 1 0 1 1 = - 5
(0) 1 1 0 1
(0) 1 1 0 1
(0) 0 0 0 0
(0) 1 1 0 1
+ 0 (1)(1)(0)(1)
= 0 (1) 0 1 1 1 1 1 1
(1) 1 0 1 1 1 1 1 1 = - 65
问:低4位没问题到从右边数第5位之后怎么不是简单的加啊
如果是应该结果为 101011111
格式显示的不正确 我的意思就是带符号相乘的结果怎么从每次中间乘结果中得到

补码的乘法,不是这么直接计算的。

乘数、被乘数,都有可能是正数或负数。
都要变换成正数再相乘,即可得出乘积的绝对值。

再根据乘数、被乘数的符号,算出积的正负号。

如果是正的,积的绝对值,就是结果了。
如果是负的,就把积的绝对值求反加一。

在 8086/8088 CPU 中,这些步骤,会自动进行。
我们编程时,仅仅写一行:IMUL,即可。

嗳,你这个做算法的方法是错误的,好不!要知道二进制(或机器码)只有在正数的情况下才能运算,(正数与负运算时)都是在正数情况下进行,如果是负数,就将它变为正(负数的补码),然后再进行运算。
1101=+13
1011=+11你的问题都是错的,做对了才怪!
(1)1011--0101
1101
*0101
1101
0000
1101
1000001
最后得(1)10111111

这里(1)表示减1