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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 中关村阿旺 中级黑马   /  2013-10-4 17:14  /  2216 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 中关村阿旺 于 2013-10-4 17:16 编辑

java转换的负数(-6)二进制和计算器转换的负数(-6)的二进制为什么不一样呢?
到底哪个正确?


java转换的负数二进制.PNG (645 Bytes, 下载次数: 98)

java转换的负数二进制

java转换的负数二进制

计算器转换的负数二进制.PNG (1.2 KB, 下载次数: 93)

计算器转换的负数二进制

计算器转换的负数二进制

为什么不一样呢.PNG (16.83 KB, 下载次数: 92)

为什么不一样呢

为什么不一样呢

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

7 个回复

倒序浏览
计算机内部是double类型的咯..
回复 使用道具 举报
哥么你用的什么计算器算的哦
是否选用的是八进制? 是否采用的4字节来表示的???
Java代码的那个结果是是正确的,一整int型变量在内存中分配的大小是4字节,而一个字节又占8个二进制位
  故结果应该是32位

不知道解释你是否懂?不懂可以M我

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 FFF 于 2013-10-4 18:18 编辑

是位数的问题,其实都是-6.

你把计算器的上字节选为"双字",不要选择默认的"四字"就可以啦!
如图1:
如果你细心一点就会发现,最后的几位数的数字都是1010.只是位数不一样,一个是64位,一个是32位而已!

QQ图片20131004181513.jpg (77.85 KB, 下载次数: 103)

图1

图1

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
你的计算器是不是win7自带的?  那个2进制是64位的,
而Java默认的int是32位,所以表示出来看起来不一样,
因为是负数,64位相比32位就是把前面都补上1了而已,其实都是-1

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
你那计算器是64位的吧,是long数据类型的
回复 使用道具 举报
chensc 金牌黑马 2013-10-6 09:14:33
7#
学习学习!
回复 使用道具 举报
谢谢大家解答!{:soso_e113:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马