【发布时间】:2010-06-08 22:04:05
【问题描述】:
我希望能够在 C++ 中访问数字的符号位。我当前的代码如下所示:
int sign bit = number >> 31;
这似乎有效,给我0 为正数和-1 为负数。但是,我看不出我如何得到 -1 的负数:如果 12 是
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1100
那么 -12 是
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 0011
并将其移动 31 位将使
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0001
这是 1,而不是 -1,那么为什么我在 shift 时会得到 -1?
【问题讨论】:
-
int sign_bit = (int)(number > 0);
-
对于two's complement(大多数现代系统使用),您的 -12 是错误的。它应该以 0100 结束。
标签: c++ binary bitwise-operators