二进制的乘法问题
2个八字节的数相乘 遇到了一点问题请大神帮忙 17* -114 已解17=00010001 -114=10001110 但不知为何相乘的结果为100101101110请大神帮我看看是哪里出错了 ? 具体代码? 行客 发表于 2019-1-26 00:17
具体代码?
不是就需要个运算过程即可我想知道自己运算哪里出错了 有符号数相乘?
无符号数相乘?
人造人 发表于 2019-1-26 09:17
有符号数相乘?
无符号数相乘?
就是 普通的 17 *(-114)像小学乘法那样把运算过程写出来就好了 我不知为什么得出一个错误答案 而且还不能上传我答案过程的图片 想一想我们在十进制中如何计算一个正数乘以一个负数?
举例
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 09:36
懂了 谢谢你
页:
[1]