【发布时间】:2015-08-24 05:29:25
【问题描述】:
假设我有一个整数(32 位),它存储一个 n 位无符号数(n
一个简短的例子来说明我的意思:
int numUnsigned = 15; // Store a 4-bit value 0b1111
int numSigned = ???; // Convert to 4-bit signed value using two's complement
// Now numSigned should be -1, since 0b111 == -1
我整个上午都在弄乱这些位,但似乎无法正确处理。
【问题讨论】:
-
将 MSB(第 4 位)延长到第 32 位怎么样?这应该会给你第 4 位数字的签名表示。
-
有点不清楚你从哪里得到
n。 -
@Caleb 我知道这不是 2 的补充。我只是误解了这个问题。
-
@AlexLop。我读得越多,我就越觉得你的想法是对的。这个问题需要澄清一下。
-
@Caleb 代码第二行的注释有点混乱……(@Boris)
标签: c++ bit-manipulation twos-complement