黑马程序员技术交流社区

标题: 求解:负数的二进制表现形式 [打印本页]

作者: 中关村阿旺    时间: 2013-10-4 17:14
标题: 求解:负数的二进制表现形式
本帖最后由 中关村阿旺 于 2013-10-4 17:16 编辑

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


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

java转换的负数二进制

java转换的负数二进制

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

计算器转换的负数二进制

计算器转换的负数二进制

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

为什么不一样呢

为什么不一样呢

作者: hyz123456    时间: 2013-10-4 17:54
计算机内部是double类型的咯..
作者: 麦子    时间: 2013-10-4 17:57
哥么你用的什么计算器算的哦
是否选用的是八进制? 是否采用的4字节来表示的???
Java代码的那个结果是是正确的,一整int型变量在内存中分配的大小是4字节,而一个字节又占8个二进制位
  故结果应该是32位

不知道解释你是否懂?不懂可以M我
作者: FFF    时间: 2013-10-4 18:15
本帖最后由 FFF 于 2013-10-4 18:18 编辑

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

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

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

图1

图1

作者: winsking    时间: 2013-10-4 18:16
你的计算器是不是win7自带的?  那个2进制是64位的,
而Java默认的int是32位,所以表示出来看起来不一样,
因为是负数,64位相比32位就是把前面都补上1了而已,其实都是-1
作者: 王飚    时间: 2013-10-4 23:37
你那计算器是64位的吧,是long数据类型的
作者: chensc    时间: 2013-10-6 09:14
学习学习!
作者: 中关村阿旺    时间: 2013-10-17 15:30
谢谢大家解答!{:soso_e113:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2