计算机中数据的运算和存储都是以二进制的补码进行的。
~是位运算中的反码运算符。
首先,正数的原码,反码和补码都是一样的。
20在内存中的二进制表示是: 00000000 00000000 00000000 00010100
~20就是对20的补码进行取反:11111111 11111111 11111111 11101011 (注意:~运算时,符号位也要参与)
那么获得的补码对应的十进制数是什么呢?
我们知道,求一个十进制数的二进制的补码的步骤是:二进制原码取反后+1即得补码。
难么,我们接下来可以由获得的补码反向推出原码,方法是:
补码:11111111 11111111 11111111 11101011
反码:11111111 11111111 11111111 11101010
原码:10000000 00000000 00000000 00010101 (注意:这里在取得反码的时候,符号位不参与运算,因为要保证数据的原样)
可以知道,该原码所表示的十进制数是-21。所以~20的结果是-21 |
|