位操作符 '~'
作用:按位取反
#include<stdio.h>
int main()
{
int a = 0;
int b = ~a;
printf("%d\n", b);
return 0;
}
解释:
a=0
00000000000000000000000000000000
11111111111111111111111111111111
b=~a=-1
进一步解析:
原码 反码 补码
//负数存储的时候,存储的是二进制的补码
//b是有符号的整型,二进制的最高位0---正数 1---负数
//使用的,打印的时候是这个数的原码
//补码-1=反码 反码保留第一位符号后按位取反
00000000000000000000000000000000
(a的原码)
11111111111111111111111111111111
(a的反码=b的补码)
11111111111111111111111111111110
(b的反码)
10000000000000000000000000000001
(b的原码)
二进制打印:-1*1*2^0=-1