我试图取0的补数得到1,但得到4294967295。这是我所做的:

 unsigned int x = 0;
 unsigned int y= ~x;
 cout << y;

我的输出是4294967295,但我期望1,为什么会这样?顺便说一句,我正在C++中执行此操作。

最佳答案

你为什么期望1?按位补码会翻转所有位。

00000000000000000000000000000000 = 0
              |
          bitwise NOT
              |
              v
11111111111111111111111111111111 = 4294967295

也许您正在考虑logical NOT。在C++中,它写为!x

10-07 20:22