一、JAVA按位取反运算符 ~

描述:

1.最高位,也就是最左边的符号位:0表示正数,1表示负数;
2.补码--》原码 ( 符号位不变);
3.正数的原码、反码、补码都是同一个反之,负数最高位1,原码-〉反码(取反),反码-》补码(加一);
4.取反;
5.取反后,正数(原码、反码、补码都是同一个),反之,负数(减一,在取反)

综上:

1.取反操作(原码->反码->补码 ->取反操作->补码->反码(原码))
2.正数的原码、反码、补码都是同一个反之
3.反码->补码 负数加一
4.反码->原码 负数减一

正数 ~1

1的原码 0000 0001
1的反码 0000 0001
1的补码 0000 0001
按位取反操作 1111 1110
#负数(因为最高位为1,表示为负数),就需要将其变为原码,补码变为原码,首先先减1
变为原码先减一 1111 1101
#变为原码时,符号位不变
再取反 1000 0010 (-2)

负数 ~-1

-1的原码 1000 0001
-1的反码 1111 1110
-1的补码 1111 1111
按位取反操作 0000 0000
#因为正数的补码、反码、原码都是一个样。
变为原码 0000 0000 (0) 

你可能感兴趣的:(一、JAVA按位取反运算符 ~)