C 中的补码运算符 ~

标签 c

#include<stdio.h>
int main(){
        int a = 11; // 0000 0000 0000 1011
        int b = ~a; // 1111 1111 1111 0101 [2s compliment] 0100 => 0101 => 
        printf("\n %d \n",b); // -11
        return 0;
}

该程序输出值-12。假设“~”对应于2的补码,它必须输出-11,如果它对应于1的补码,它必须输出-4。 无法了解它如何输出值 12。

最佳答案

~ 运算符不是 2 的补码,而是按位求反。它只是一点一点地改变。

2 的补语定义为 (~a)+1

关于C 中的补码运算符 ~,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26840277/

相关文章:

使用 C 创建 AES key

将 void* 转换为 char*

c - 英特尔 FMA 指令提供零性能优势

c - 将字符添加到链接列表中

c - c中带有char指针的二维数组

带有结构体和二维数组的 C 指针

c - 为什么 feof() 中会出现段错误?

c - 在定义之前是否允许 typedef

c - 使用指针交换

c - XDefaultDepth 和 XDisplayPlanes – 有什么区别?