Java "Bit Shifting"教程?

标签 java bit-manipulation bit-shift

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

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

这只是我的意思的一个例子,(但我正在寻找一个解释所有可能操作的教程):

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

最佳答案

好吧,官方Java教程Bitwise and Bit Shift Operators涵盖了 Java 中可用的实际操作,以及如何调用它们。

如果您想知道“我可以用位移做什么”,那么这不是 Java 特定的,而且由于它是一种低级技术,我不知道任何“你可以做的很酷的事情”列表瑟。熟悉这些定义是值得的,并留意其他使用它的代码,看看他们做了什么。

请注意,经常使用位旋转是一种以牺牲清晰度为代价的效率增益。例如,a << 1通常与 a * 2 相同但可以说不太清楚。重复的 XOR 可以在不使用临时变量的情况下交换两个数字,但通常认为更好的形式是更清楚地编写代码 with 临时变量(或者甚至更好,在实用程序方法中)。所以在这方面很难举出很好的例子,因为你不可能在架构层面上取得任何新的或深刻的成就。这都是关于低级细节的。 (而且我估计“在野外”大量使用比特旋转是过早优化的实例。)

关于Java "Bit Shifting"教程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6250114/

相关文章:

java - 小程序内的 JAXB - 找不到 package-info.class

java - 使用 gson 反序列化内部类返回 null

java - 为什么我的按钮不起作用?

c++ - 如何在模板函数 C++ 中更改类型名的符号性

java - 如何修复NoSuchMethodError:org.apache.hadoop.mapred.InputSplit.write

c# - 这个从两个 8 位值中找到 14 位值的函数的反面是什么?

python-3.x - python3 : How to get logical complement (negation) of a binary number, 例如。 '010' => '101' ?

c - 错误地更新位字段

c - 64 位数字的 NOT 在 c 中给出错误结果

c++ - 使用移位运算符除以任意数