【发布时间】:2014-11-22 01:07:20
【问题描述】:
对于这个问题,我必须减去两个二进制数。结果必须是负数,但我总是得到错误的答案。这是我所做的:
57 - 184
111001 - 10111000
然后我翻转 10111000 是它的 01000110
最后加一个01000111
然后我这样做了:
(迷路了)
111001 + 01000111 = 10000000。
然后你从 -128 或 -256 中减去它。 (我迷路了,请帮忙!)
【问题讨论】:
标签: binary
对于这个问题,我必须减去两个二进制数。结果必须是负数,但我总是得到错误的答案。这是我所做的:
57 - 184
111001 - 10111000
然后我翻转 10111000 是它的 01000110
最后加一个01000111
然后我这样做了:
(迷路了)
111001 + 01000111 = 10000000。
然后你从 -128 或 -256 中减去它。 (我迷路了,请帮忙!)
【问题讨论】:
标签: binary
111001 - 10111000
Because left is smaller than right operand, pre-add 100000000
(100000000 is where you want to have sign bit after)
100000000
+ 111001
-----------
100111001
Then just subtract
100111001
- 10111000
-----------
10000001
Result (8bits) = -127
【讨论】:
使用 filp,因为这个 010111000 是它的 101000110 当第一个二进制中有 1 时使用额外的 0!
【讨论】: