~,用法只有一个那就是按位取反,需要主意的是:
~的按位取反,包括符号位正数各位取反变为负数,显示时转化为其补码负数本身需要先转换为补码(符号位不变,各位取反再加 1),再对其补码进行各位去反
1. ~5
5 的二进制为 0101,
~5
(1)各位取反,1010(2)变为负数,转化为其补码形式(符号位保持不变),各位取反 1(1101),再加1(1110),也即 -6
>> ~5>> -6
2. ~(-5)
-5 因为是负数,存储时存储的是其补码:
-5 的补码是:1011,~(-5)将其各位取反(包括符号位),也即 0100(4)
>> ~(-5)>> 4