qpwoeiruyt 发表于 2019-1-26 06:17:08

二进制的乘法问题

2个八字节的数相乘 遇到了一点问题请大神帮忙   17* -114    已解17=00010001   -114=10001110   但不知为何相乘的结果为100101101110
请大神帮我看看是哪里出错了 ?

行客 发表于 2019-1-26 07:17:35

具体代码?

qpwoeiruyt 发表于 2019-1-26 16:08:51

行客 发表于 2019-1-26 00:17
具体代码?

不是就需要个运算过程即可我想知道自己运算哪里出错了

人造人 发表于 2019-1-26 16:17:40

有符号数相乘?
无符号数相乘?

qpwoeiruyt 发表于 2019-1-26 16:27:03

人造人 发表于 2019-1-26 09:17
有符号数相乘?
无符号数相乘?

就是 普通的 17 *(-114)像小学乘法那样把运算过程写出来就好了   我不知为什么得出一个错误答案   而且还不能上传我答案过程的图片

人造人 发表于 2019-1-26 16:35:28

想一想我们在十进制中如何计算一个正数乘以一个负数?
举例
17 *(-114) = ?

先计算17 * 114 = 1938
然后在1938前面加一个负号变成 -1938

仔细看,我们在计算时是计算两个正数相乘,最后把两个正数相乘的结果取反

在二进制中同样如此

0001 0001        17
1000 1110        -114

1111 1000 0110 1110        -1938


1000 1110        -114
0111 0010        114


       00000000
      000100010
   0000000000
    00000000000
   000100010000
0001000100000
00010001000000
000000000000000

000011110010010

0000 0111 1001 0010        1938
1111 1000 0110 1110        -1938


1000 1110 是 -114
0111 0010 是 114

114 * 17 = 1938
0111 0010 * 0001 0001 = 0000 0111 1001 0010

0000 0111 1001 0010 是 1938

把0000 0111 1001 0010变成负数
1111 1000 0110 1110 是 -1938

人造人 发表于 2019-1-26 16:36:07

qpwoeiruyt 发表于 2019-1-26 16:44:51

人造人 发表于 2019-1-26 09:36


懂了 谢谢你
页: [1]
查看完整版本: 二进制的乘法问题