黑马程序员技术交流社区

标题: 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