黑马程序员技术交流社区
标题:
JAVA中取反和位运算的的反码~的去别,一个+1一个-1
[打印本页]
作者:
xiaoxipeng
时间:
2017-2-22 23:48
标题:
JAVA中取反和位运算的的反码~的去别,一个+1一个-1
搞晕头了,求解答。谢谢
作者:
笑对明天
时间:
2017-2-23 17:35
正数原码反码补码相同,负数反码:原码的符号位不变其余取反,负数补码:反码+1
作者:
xiaoxipeng
时间:
2017-2-23 21:22
笑对明天 发表于 2017-2-23 17:35
正数原码反码补码相同,负数反码:原码的符号位不变其余取反,负数补码:反码+1 ...
我明白了,取反就是位运算中的反码。。以前是没搞懂这个概念
作者:
xiaoxipeng
时间:
2017-2-23 22:01
首先要明确,取反是二进制操作
下面以5为例:
二进制原码:0000 0000 0000 0000 0000 0000 0000 0101
取反操作后:1111 1111 1111 1111 1111 1111 1111 1010
而在Java中,有符号整数都是用补码来表示,而补码=反码+1
1.先求反码:1000 0000 0000 0000 0000 0000 0000 0101
2.再求补码:1000 0000 0000 0000 0000 0000 0000 0110
最高位代表符号位 1 表示负数,0 表示正数 所以结果是-6
负数取反最高位不动 其余取反 -----------懂了
作者:
xiaoxipeng
时间:
2017-3-5 21:14
明天开始从头学起了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2