gpt4 book ai didi

c++ - 在 C/C++ 中使用 ~ 的 1 补码

转载 作者:可可西里 更新时间:2023-11-01 18:05:58 40 4
gpt4 key购买 nike

我正在使用 Visual Studio 2013。
最近我尝试了 ~ 运算符来求 1 的补码:

int a = 10;
cout << ~a << endl;

输出为-11

但是为了

unsigned int a = 10;
cout << ~a << endl;

输出是4294967296

我不明白为什么在签名 int 的情况下输出是 -11。请帮助我解决这个困惑。

最佳答案

当您将数字 10 放入 32 位有符号或无符号整数中时,您会得到

0000 0000  0000 0000  0000 0000  0000 1010

当你否定它时,你得到

1111 1111  1111 1111  1111 1111  1111 0101

这 32 位表示 4294967285 作为无符号整数,或 -11 作为有符号整数(您的计算机将负整数表示为 Two's complement )。它们也可以表示一个 32 位 float 或四个 8 位字符。

位没有任何“绝对”意义。它们可以代表任何东西,这取决于您如何“看待”它们(它们具有哪种类型)。

关于c++ - 在 C/C++ 中使用 ~ 的 1 补码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23978683/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com