零件的否定
Negation of Bits
本文关键字:零件 更新时间:2023-10-16
以下代码给出输出-1
。
#include <iostream>
using namespace std;
int main()
{
int x=0;
cout<<~x;
return 0;
}
但是,当我进行以下修改时,答案更改为 4294967295
。只想知道为什么在int的情况下不给-2147483647
(111 .... 32次)
#include <iostream>
using namespace std;
int main() {
unsigned int x=0;
cout<<~x;
return 0;
}
~
操作员将操作数中的所有位反转。在这里,x
最初为0。因此,假设int
是4个字节宽,则具有以下二进制表示:
00000000 00000000 00000000 00000000
当所有位倒置时,您都会得到:
11111111 11111111 11111111 11111111
假设两个整数的补体表示形式,该位序列的值为-1。请注意,如果将1添加到此值,则所有位变为0(即-1 1 = 0)。
相反,值-2147483647具有以下表示:
10000000 00000000 00000000 00000001