当前位置: 首页 > 面试题库 >

为什么Java中两个短值的按位与运算会导致int值?

丁文轩
2023-03-14
问题内容
short permissions = 0755;
short requested = 0700;
short result = permissions & requested;

我收到编译器错误:

error possible loss of precision
found   : int
required: short

如果我不是完全错误,则二进制AND的结果与最长的操作数一样长。为什么结果是整数?

如果我想做空,会不会有表现上的损失?

(short) permissions & requested

问题答案:

如果我不是完全错误,则二进制AND的结果与最长的操作数一样长。为什么结果是整数?

因为Java语言规范说非长整数算法的结果始终是int。它可能写在的事实,32位CPU一样,内部的工作无论如何确认的方式-他们实际上不 具有
一种方法做算术搭配短裤。

如果我想做空,会不会有表现上的损失?

由于上述原因:否-无论如何都必须发生。



 类似资料:
  • 我试图在两个数字之间执行位或运算:650510336和2147483648()

  • 问题内容: 在Java中,如果将s,s或s相除,则总会得到一个。如果操作数之一是,我们将得到。 我的问题是-为什么或除法不会导致或?为什么总是? 显然,我不是在寻找“因为JLS这样说”的答案,而是在询问Java语言中此设计决策的技术原理。 考虑以下代码示例: 除以一个字节就不能了,可以吗? 那么为什么一定是一个?为什么不能有? 为什么必须如此,结果总是合适的,不是吗? 更新资料 正如@Eran所指

  • 问题内容: 为什么以下计算会产生负值? 问题答案: 正在评估其中的每个表达式(当然是在编译时;它是一个常量),而不是。结果在某个时候溢出。因此,只需使所有操作数文字变长即可: 当然,仅使 一些 操作数变长就可以逃脱,但是我倾向于发现仅更改所有内容会更容易。 综上所述,如果您要查找“ 30天的毫秒数”,最好使用:

  • 问题内容: 我正在研究《 Beginning Android Games》 这本书。我注意到的一件事是: 这是我第一次看到这样的变量,所以我不知道它的作用。我在Java中运行代码并创建了一些示例。 如果我运行此代码: 答案将是0?这是为什么? 如果我运行此代码: 起初,我认为这是价值的串联,因此我假设i = 10500,但事实并非如此。答案是一样的。还是0?有人知道这里发生了什么吗? 问题答案:

  • 如果我编译这个: 然后我得到这个错误: 这让我经历了一段短暂的旅程,我决定^总是在按位上下文中生成int。我不明白为什么会做出这样的选择。 起初我认为这可能与装箱(或拆箱)有关,但我使用的是一个基元类型,因此我不认为这是我困惑的一部分。 我能想到的唯一一件事是字节被提升为int,但我还没有找到任何证据表明发生了这种情况。

  • 问题内容: 低级别的位操作从来都不是我的强项。在理解以下按位运算符的用例时,我将不胜感激。请考虑… 我不确定这段代码将完成什么以及如何完成?为什么使用幻数0x7F?包装和拆包如何完成? 资源 问题答案: 就像评论所说,我们将年龄,性别和身高分成15位,格式为: 让我们从这一部分开始: 首先,age具有以下格式: 其中每个A可以为0或1。 将位向左移动8位,并用零填充间隙。这样就得到: 类似地: 现