~ 按(二进制)位取法
把所有二进制位中的数字,1变0,0变1,包括符号位。
整数在内存中存储的是补码,正数的原码补码反码相同。
原码—符号位不变,其他位按位取反—>反码—+1—>补码
按位取反(符号位也变,都变!)
这里补充一下-0的原码补码反码
[-0]原码 = 1000 0000 [-0]反码 = 1111 1111 [-0]补码 = 0000 0000
也就是说 0的补码只有一种形式
printf("%d\n", ~0);
int a = 6;
printf("%d\n", ~a);
int b = -7
printf("%d\n