我想知道什么是Java中的按位运算符和运算符时间复杂度,以及如何使用其他方法(如果有的话)来降低它。 在此先感谢!
答案 0 :(得分:1)
Java按位运算符对原始操作数进行运算,并且每个运算符都使用一对JVM字节码指令实现。以&
为例,这些指令分别是int
的{{3}}和long
的{{3}}。 (在JVM中,基本字长为32位,理论上较短的整数类型存储为32位。)JVMS并未指定这些指令的时间复杂度,但是在任何合理的实现中,它们都将使用CPU来实现。按位指令,因此&
在任何特定数据类型上的时间都是恒定的,而与操作数的内容无关。
答案 1 :(得分:0)
位运算速度快,可用于优化时间复杂度。一些常见的位运算符是:NOT(〜):按位NOT是一元运算符,它会翻转数字的位,即,如果第i位为0,它将更改为1,反之亦然。按位NOT不是什么,而仅仅是一个数字的补码。
答案 2 :(得分:0)
通常,&
操作的时间复杂度为O(n)
,其中n是32位值或64位值的数量,具体取决于JVM。
对于单个int
值,内容无关紧要。
10 ^ 5是数组的长度
在这种情况下,时间将与数组的长度成比例。
最快的方法是使用long
值并在每个元素中存储64位。
用户端没有其他方法可以减少这种操作时间的复杂性吗?
两个int值的&
运算是计算机可以执行的最快运算之一,通常需要1个时钟周期,即<< 1 ns。这只是一个问题,如果您要进行很多操作。