基础知识
C语言 | 含义 |
---|---|
x | 一个变量,名字为x |
~x | 将x按位取反(二进制层面) |
~x+1 | x的相反数 |
例子(假设是2位二进制)
比如x取十进制值为2,2是一个正数,正数在二进制中的符号位是0,表示方法:
x = 2D // D表示十进制
= 010B// 首位符号位,0表示正数
~x,也就是先将x从10进制表示为2进制,再按位取反
~x
= ~010B // B表示二进制
= 101B // 这个值在十进制中表示-3
= -3D
~x+1,将上面的结果再加1(十进制)
~x + 1D
= 101B + 1D
= 101B + 001B
= 110B //这个值在十进制中表示-2
= -2D
测试用例
int main()
{
int a = 0x00000002;
printf("%d\n", a);
printf("%d\n", !a);
printf("%d\n", ~a);
printf("%d\n", ~a+1);
return 0;
}
运行结果