java 中按位 & 运算符的时间复杂度是多少?

What is time complexity of bitwise & operator in java?

我想知道 java 中的按位和运算符时间复杂度是多少,以及如何使用其他方法降低它(如果有)。 提前致谢!!

位运算速度快,可用于优化时间复杂度。一些常见的位运算符是: NOT ( ~ ):按位 NOT 是一个一元运算符,它翻转数字的位,即,如果第 i 位是 0,它会将其更改为 1,反之亦然。按位非只是一个数的补码。

Java 按位运算符对原始操作数进行运算,每个运算符都是使用一对 JVM 字节码指令实现的。以 & 为例,这些指令是 iand for int and land for long。 (在 JVM 中,基本字长为 32 位,较短的整数类型理论上存储为 32 位。)JVMS 没有指定这些指令的时间复杂度,但在任何合理的实现中,它们将使用 CPU 的按位指令,因此无论操作数的内容如何,​​任何特定数据类型的 & 都是常数时间。

通常,& 操作的时间复杂度为 O(n),其中 n 是 32 位值或 64 位值的数量,具体取决于 JVM。

对于单个 int 值,内容无关紧要。

10^5 is length of array

在这种情况下,时间将与数组的长度成正比。

最快的方法是使用 long 值并在每个元素中存储 64 位。

no alternative from the user side to reduce this operation time complexity?

两个 int 值的 & 操作是计算机可以执行的最快操作之一,通常需要 1 个时钟周期,即 << 1 ns。如果你做了很多,这只是一个问题。