#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/