首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JAVA:数字存储?

JAVA:数字存储?
EN

Stack Overflow用户
提问于 2012-11-15 09:09:04
回答 2查看 218关注 0票数 0

我正在为AP考试自学Java,但我偶然发现了一个我不太理解的部分。

有一个被分成8个部分的盒子,代表8比特的存储。第一个盒子有0,后面的七个盒子有1。为什么可能的值是-2^7 - (2^7)-1,即-128 - 127?为什么不打开第一个比特并将其设置为-2^8 - 2^8?请以最简单、最透彻的方式解释。我在网上读过一些关于这方面的答案,但我不明白。这也是我书中的第一部分,他们没有很好地解释。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2012-11-15 09:13:12

这是一个组合问题。如果你的手上有8个手指,你可以向另一个人展示多少种可能的手指组合?答案是2^8,也就是2* 2^7,所以你有2^7个正数和2^7个负数,但你也必须显示零。这就是为什么你有2^7-1个正值,2^7个负值和0。我希望这能很好地解释这一点。

票数 1
EN

Stack Overflow用户

发布于 2012-11-15 09:15:44

Java字节表示为有符号字节,因此最左边的位表示数字的符号(正数或负数),因此只剩下7位。如果全部使用了8位(因此可以达到2^8),则不能表示负数。

这个two's complement table显示了这一点

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13390118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档