一、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) 
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容