我有一个无符号整数(32位),其中存储了一个n位有符号数(2的补码,因此-16 ≤ x < 16,结果无符号值在0-15范围内)。
我如何使用二进制补码有效地将其转换为有符号的解释?
举个简单的例子来说明我的意思:
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 0b1111 == -1
字符串
我整个上午都在摆弄这些小东西,但似乎总弄不好。
1条答案
按热度按时间qojgxg4l1#
如果我对你的问题理解正确的话,你只需要一个符号扩展,而不是2的补码(至少根据你在第二行代码中的注解)。
如果我是正确的,你可以这样做(假设你有N个数字,0 < N < 32):
字符串
也许我误解了你的问题如果是这样,就忽略我的回答。
编辑
由@harold建议:
型