涉及原码,反码,补码概念
int main(){
int a = 0;
int b = ~a;//b是有符号的整型
//按二进制取反
//00000000000000000000000000000000000
//1111111111111111111111111111111111111111
//原码,反码,补码
//二进制的最高位是符号位
//负数在内存中存储的时候,存储的是二进制的补码
//补码减1得到反码
//1111111111111111111111111111111111111111(补码)
//1111111111111111111111111111111111111110(反码)
//00000000000000000000000000000000000(原码)
printf("%d\n", b);//使用的,打印出来的是这个数的原码
//结果是-1
return 0;
}
总结
1.二进制在计算机中以补码存储。
2.正数的原码=反码=补码;负数的原码=补码按位取反,补码=反码+1。
3.实际步骤就是列出原数的补码,求取反之后的补码,之后换得换成原码。