c++ - NOT 对整数值的操作

标签 c++ bit-manipulation tilde

我知道 ~ 操作符不操作。但是我无法弄清楚以下程序的输出(-65536)。到底发生了什么?

#include <stdio.h>

int main(void) {
  int  b = 0xFFFF;
  printf("%d",~b);
  return 0;
}

最佳答案

假设 32 位整数

int  b = 0xFFFF; => b = 0x0000FFFF
~b = 0xFFFF0000

最高位现已设置。假设 2s complement ,这意味着我们有一个负数。反转其他位然后加一得到 0x0001000065536

关于c++ - NOT 对整数值的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17952495/

相关文章:

mongodb - 在 mongo 中设置单个位,以存储位掩码

c++ - 在不使用 bitset 的情况下如何知道 C++ 中的位状态?

javascript - 32 位无符号整数的按位运算?

c++ - 波浪号运算符分别返回 -1、-2 而不是 0、1

r - 概括 R 中公式的创建

c++ - OpenCV/FFMpeg图像捕捉问题

c++ - 使用 C++ 的静态控件背景颜色

c++ - 是否有免费的解析器生成器可以生成 C++ 代码并正确处理 Unicode?

c++ - 如何限制矩阵类只得到 'X' 'O' 或 '.'

Apache 将逻辑否定重定向至波形符 ~