Tag: 位操作

Java:比等价逻辑运算符按位OR和AND更快?

剪切和干燥…虽然我从来没有足够的逻辑操作来成为性能瓶颈 – 我想,我会更好地使用按位和(&)和按位或(|)而不是同名的逻辑运算符(&&和||)如果可能的话? 也许这个问题可以通过以下事实来开头:我不知道将Java转换为程序集以查看操作数。

Java如何在java中解析uint8?

我有一个来自UDP数据包的uint8 (无符号8位整数) 。 Java仅使用签名的基元。 如何使用java正确解析此数据结构?

Java中的Bitshifting

我试图理解位移是如何工作的。 有人可以解释一下这行的含义: while ((n&1)==0) n >>= 1; 其中n是一个整数,给出一个执行移位时n的例子。

int中使用的计数位数

如果您有二进制数10110,我怎么能让它返回5? 例如,一个数字告诉我们使用了多少位? 下面列出了一些类似的例子: 101应该返回3 000000011应该返回2 11100应该返回5 101010101应该返回9 如何在Java中获得最简单的方法? 我已经提出了以下方法,但我可以更快地完成: public static int getBitLength(int value) { if (value == 0) { return 0; } int l = 1; if (value >>> 16 > 0) { value >>= 16; l += 16; } if (value >>> 8 > 0) { value >>= 8; l += 8; } […]

我怎样才能得到位的位置

我有一个十进制数,我需要转换为二进制,然后在二进制表示中找到一个的位置。 输入为5,二进制为101 ,输出应为 1 3 下面是我的代码,它只提供输出为2而不是我想提供一个二进制表示的位置。 如何从1开始获取设置位的位置? public static void main(String args[]) throws Exception { System.out.println(countBits(5)); } private static int countBits(int number) { boolean flag = false; if (number > 1; } return flag ? (32 – result) : result; }

在Java中,按位AND,按位包含或问题

我在项目中有几行代码,我看不到…的价值 buffer[i] = (currentByte & 0x7F) | (currentByte & 0x80); 它从文件读取文件缓冲区,存储为字节,然后传输到缓冲区[i],如图所示,但我无法理解总体目的是什么,任何想法? 谢谢

请解释Kernighan的位计数算法背后的逻辑

在以整数时间复杂度读取Bits计数算法(Brian Kernighan)之后,直接遵循此问题。 有问题的Java代码是 int count_set_bits(int n) { int count = 0; while(n != 0) { n &= (n-1); count++; } } 我想了解n &= (n-1)在这里实现了什么? 我在另一个漂亮的算法中看到了类似的构造,用于检测数字是否是2的幂,如: if(n & (n-1) == 0) { System.out.println(“The number is a power of 2”); }

为什么在Java(高+低)/ 2错误但(高+低)>>> 1不是?

我理解>>>修复溢出:当添加两个大的正长数时,你可能会得到一个负数。 有人可以解释这种按位转换如何神奇地修复溢出问题吗? 它与>>什么不同? 我怀疑:我认为这与Java使用两个赞美这一事实有关,所以如果我们有额外的空间,但溢出是正确的数字,但是因为我们没有变成负面。 所以当你移动并用零划桨时,它会因为两个赞美而神奇地得到修复。 但我可能是错的,有点大脑的人必须证实。 🙂

“| =”在Java中意味着什么?

注意我的问题不是关于!=但是|= 一个用法示例在这里 我假设x |= y与x = x | y相同 但我找不到确认文件,并希望确定 谢谢

按位最重要的设置位

我想找到设置为1的最重要位。 我已经尝试了从&到ORing从1到31所有位的所有可能的方式,它不起作用。 就像1000000我想拥有7 。