java⼆进制正数和负数取反
“反码”,“取反”,“按位取反(~)”,这3个概念是不⼀样的。
取反:0变1,1变0
反码:正数的反码是其本⾝,对于负数其符号位不变其它各位取反(0变1,1变0)
按位取反(~): 这将是下⾯要讨论的。
要弄懂这个运算符的计算⽅法,⾸先必须明⽩⼆进制数在内存中的存放形式,⼆进制数在内存中是以补码的形式存放的。
另外正数和负数的补码不⼀样,正数的补码、反码都是其本⾝,负数的反码是符号位不变,其余位取反,补码是反码加1,即:正数11:二进制转换方法的口诀
原码:00001011
补码:00001011
反码:00001011
负数-12
原码:11111100
反码:11110011
补码:11110100
对正数11按位取反
原码: 00001011
补码: 00001011
反码: 00001011
对补码取反: 11110100
减1得反码: 11110011
反码取反: 11111100
对负数-12按位取反
原码: 11111100
反码: 11110011
补码: 11110100
对补码取反: 00001011
对正数取反的⼝诀:补码取反减1取反
对负数取反的⼝诀:原码取反加1取反
规律:正数的取反等于正数加1取负 例如11的取反等于-12
负数的取反等于负数加1取正 例如-12的取反等于11
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论