首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中,整数是如何在内部以位级别表示的?

在Java中,整数是如何在内部以位级别表示的?
EN

Stack Overflow用户
提问于 2012-11-17 02:22:41
回答 10查看 79.3K关注 0票数 86

我试图理解Java是如何在内部存储整数的。我知道所有的java基本整数都是有符号的(除了short?)。这意味着在一个字节中该数字少了一位可用。

我的问题是,是否所有的整数(正和负)都作为2的补码存储,或者只有负数在2的补码中?

我看到说明书上写着x bit two's complement number。但我经常感到困惑。

例如:

代码语言:javascript
复制
  int x = 15; // Stored as binary as is?  00000000 00000000 00000000 00001111?
  int y = -22; // Stored as two complemented value? 11111111 11111111 11111111 11101010

编辑

需要说明的是,x = 15

代码语言:javascript
复制
   In binary as is: `00000000 00000000 00000000 00001111'
  Two's complement: `11111111 11111111 11111111 11110001`

因此,如果您的答案是all数字被存储为2的补码,那么:

代码语言:javascript
复制
  int x = 15; // 11111111 11111111 11111111 11110001
  int y = -22 // 11111111 11111111 11111111 11101010

这里同样令人困惑的是,标牌上写着,两者都是负数。可能是我读错了/误解了?

编辑不确定我的问题是否令人困惑。被迫隔离问题:

准确地说,我的问题是:正数是否存储在binary as is two's complement**?**中,而负数是否存储为

有些人说所有的都存储在二的补码中,一个答案说只有负数才存储为二的补码。

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

https://stackoverflow.com/questions/13422259

复制
相关文章

相似问题

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