A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hi2hcs 中级黑马   /  2014-8-29 00:37  /  11953 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

例:Java 中对5取反,5用二进制int表示是0000 0000 0000 0000 0000 0000 0000 0101,取反后不就是1111 1111 1111 1111 1111 1111 1111 1010,而实际上对5取反是-6,我这是哪里理解出问题了,谢谢!

评分

参与人数 1技术分 +1 收起 理由
天黑偷牛 + 1 多提问,多学习

查看全部评分

9 个回复

倒序浏览
在计算机里面,数字取反的话,需要把进制转换成二进制后,把“0”和”1“互换后,再加上”1“(在末尾处)。
示例:  
        5 = ···· 0000 0101

取反:     ···· 1111 1010
          +  ···· 0000 0001
—————————
回复 使用道具 举报
  在计算机里面,数字取反的话,需要把进制转换成二进制后,把“0”和”1“互换后,再加上”1“(在末尾处)。
示例:  
        5 = ···· 0000 0101

取反:     ···· 1111 1010
          +  ···· 0000 0001
         ————————
      -5 = 1·····1111 1011
回复 使用道具 举报
这个问题毕老师说的很清楚了啊
回复 使用道具 举报
1111 1111 1111 1111 1111 1111 1111 1010     这个是在计算机里就是-6  吧      在计算机里存储的都是补码
回复 使用道具 举报
最后要加1
回复 使用道具 举报
本帖最后由 cs8630323 于 2014-8-29 18:12 编辑
陈永赛 发表于 2014-8-29 01:01
在计算机里面,数字取反的话,需要把进制转换成二进制后,把“0”和”1“互换后,再加上”1“(在末尾处 ...

错了,你这个是求补码不是取反,搞清楚什么是原码补码反码。。。
取反有个运算符  ~,5取反就~5。5的二进,0...000101,取反1...111010, 就是-6.
回复 使用道具 举报
cs8630323 发表于 2014-8-29 18:08
错了,你这个是求补码不是取反,搞清楚什么是原码补码反码。。。
取反有个运算符  ~,5取反就~5。5的二进, ...

了解,楼主不是不明白,为什么5取反码是-6嘛?可能是楼主以为取反就是正负互换,其实
原码 =  -(反码 + 补码)
  5   =  -(  -6  + 1)  ==>  原码(5)=反码(-6)
回复 使用道具 举报
取反之后要加1才是所求负数。
回复 使用道具 举报
开始自学Java,发现真的有人和我一样问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马