二进制取反

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二进制取反相关的知识,希望对你有一定的参考价值。

一个数用二进制或十六进制标识时,其实使用这个数的反码表示的

对一个数取反,就是对其反码取反,得到的值为反码

 

在C语言中,负数是以补码方式存放的,计算方法为,负数绝对值对应数值的二进制值,按位取反后再加一。
当负数按位取反时,就是其补码按位取反。
比如,-10在存储为char型时,10的二进制值为0000 1010,取反后为1111 0101, 加一得到补码的二进制值为 1111 0110, 所以-10在存为char型时,补码的16进制值形式为0xF6.
当-10取反时,就是把1111 0110取反,结果为0000 1001, 结果为10进制的9。

int main()
{
    char a = 0x08;    //8的反码=原码
    char b = ~a;    //00001000 取反-> 11110111即为b的反码 , 原码为10001001(-9) 
    return 0;
}

 

以上是关于二进制取反的主要内容,如果未能解决你的问题,请参考以下文章

C#'~'按位取反运算符的使用

按位取反~100=-101

123取反操作为什么是-124 取反操作

复习一个小知识点(反码与按位取反)

JAVA_位取反运算符~

Delphi - 16进制取反 Not