对于整数,内存存储的都是二进制的补码
正数的原码,反码,补码相同
对于负数(举例为-2):
原码——————直接按照正负写出的二进制序列
10000000000000000000000000000010
反码——————原码符号位不变,其他位按位取反
11111111111111111111111111111101
补码——————反码+1
11111111111111111111111111111110
#include<stdio.h>
int main()
{
int a = 0;
int b = ~a;
printf("%d\n", b);
return 0;
}
此代码运行结果如下:
b是有符号的整形,最高位是符号为,若为0则表示正数,若为1则表示为负数(内存中存储的是补码,打印的是原码)