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。如果你做了很多,这只是一个问题。
我想知道 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。如果你做了很多,这只是一个问题。