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

Java“位移”教程?

爱乐邦
2023-03-14
问题内容

我要感谢一个很好的教程,该教程为Java新手解释了Java中所有“移位”如何工作。

我总是偶然发现它,但从未理解它是如何工作的。它应该解释Java中字节移位/位操作可能实现的所有操作和概念。

这只是我意思的一个示例(但我正在寻找一个讲解每种可能操作的教程):

byte b = (byte)(l >> (8 - i << 3));

问题答案:

好吧,官方Java教程“
按位和位移位运算符”介绍了Java中可用的实际操作以及如何调用它们。

如果您想知道“我该如何使用位移”,那不是Java特定的,并且由于它是一种低级技术,因此我不知道任何“可以做的很酷的事情”本身。值得熟悉这些定义,并让您对使用该代码的其他代码睁大眼睛,看看它们做了什么。

请注意,通常以位纠缠为代价会提高效率,但会降低清晰度。例如,a << 1通常与相同,a * 2但说不清楚。重复异或可以交换两个数字,而无需使用一个临时变量,但它通常被认为是更好的形式更清楚地写的代码
临时变量(或者甚至更好,在一个实用方法)。因此在这方面很难给出很好的例子,因为您不可能在体系结构级别上取得任何新的或深刻的成就。这都是关于底层细节的。(而且我估计“野外”大量使用比特纠错是过早优化的实例。)



 类似资料:
  • 问题内容: 我正在使用A 存储密集的位向量。 我想实现一个将位右移1的操作,类似于on ints。 是否存在可将s 移位的库函数? 如果没有,还有没有比下面更好的方法了? 问题答案: 这应该够了吧: 它会为您提供与原始位相同的位集,但没有最低位。 编辑: 为了概括这一点,

  • 问题内容: 我确定这对任何人来说都是一件容易的事! 为什么在Java中代码像 打印 这对我来说没有意义。是一个64位数字-而它看起来像上面的一个。我知道bitshifted s会进行int提升,但是在这种情况下我看不到发生了什么。 任何关于这里发生的事情的指针都将是很好的:) 谢谢 编辑 :感谢所有的答案-单击“提交”后,我意识到发生了什么,但是进入了模式,我无法删除!非常感谢! 问题答案: 这是

  • 问题内容: 我确定Java 与JavaScript类似 我一直在寻找类似于以下内容的功能 我倾向于 问题答案: 在命名标准上是独一无二的。这是等效项: 请注意,这不会 删除 元素,而是 将 一个元素 添加 到列表中。还请注意,Java和JS之间的极端情况行为可能会有所不同,因为它们各自都有自己的标准。

  • 本文向大家介绍java<<、>>、>>>移位操作方法,包括了java<<、>>、>>>移位操作方法的使用技巧和注意事项,需要的朋友参考一下 <<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。 以上是正整数,运算结果如下。 接下来看看将负数进行左移2位操作是什么情况,运算结果如下。 为什么会-10的二进制会出现这么多的1呢?仔细数一下刚好有32位。首先需要了解的是Java负数存储是

  • 我目前正在学习位操作,我的任务是做一个左旋转的4位整数。 我的4位左旋转代码是 我想做一个4位循环移位,以保持作为一个4位后旋转,但似乎不能理解它是如何工作的。 例如:10(1010)左旋转1位后给出5(0101),但它给出的值是21,比我的4位多。 任何能让我理解这个问题的帮助都将不胜感激!

  • 问题内容: 我有使用Java的这种行为: 输出:0 0 16 32 Java移位是循环的吗?如果不是,为什么当b << 30时我得到0,而当b << 32时我得到16? 问题答案: 移位不是循环的;对于s 移位,Java仅使用5个最低有效位,因此等效于(等效于等)。您可以简单地求出移位量,然后除以32的余数。 移位s 也会发生类似的情况,其中Java仅使用6个最低有效位,因此等效于。 JLS的第1