【C语言】操作符 ~ ,二进制位按位取反

操作符: ~   二进制位按位取反(1变0,0变1)
涉及的知识点:数据(如整数)在内存中储存的是其补码
一个整数(这里用整数举例)的二进制表示有三种:
原码   反码   补码
正数的转换计算:原码、反码、补码相同
负数的转换计算:(用-1来举例)
原码:10000000000000000000000000000001
反码:11111111111111111111111111111110
补码:11111111111111111111111111111111
不管原码变成反码还是补码,符号位不动
但是,一定要分清楚用操作符 ~ 的时候,连符号位也得取反
so了解到这个再看看操作符 ~ 它的按位取反,反的是什么
这时候一定要清楚知道:一个数在内存中以补码的形式储存
所以用操作符 ~ 时,在内存中提取的是这个数的补码
所以是将这个数的补码按位取反
如 -1 ,在内存中储存的是补码:11111111111111111111111111111111
将其补码按位取反  ,取反后是:00000000000000000000000000000000
如下
#include
int main()
{
    int a = -1;
    printf("%d", ~a);
    return 666;
}

你可能感兴趣的:(c语言,开发语言,经验分享)