零件的否定

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