例子
~0=?
~0=-1
~表示取反,假设0为int类型,则该数在c++中是32位的,即在计算机内部表示为
00000000000000000000000000000000
第一位表示符号位,其余31位表示该数的值。
~0就是将该数全部取反,得到32个1。
但这还没完,负数在计算机中以补码的形式存储。
补码 = 源码(除符号位)取反+1
即32个1只是该数取反后的源码。
源码取反后得到
10000....0000000
再+1
10000....0000001 //-1
小试牛刀
int A = 3;
cout<<(~A)<<endl;//-4
3转换成2进制为011,取反后为100(前面全是1)
00000....011=》11111....100=》10000....011+1=》10000...100=》-4