Bitshift时间复杂度

时间:2017-05-03 14:30:35

标签: java c bit-manipulation bit-shift

我想知道正确的bitshift运算符>>的时间复杂度是什么,最好是在java中,如果可能的话,还有其他语言,如C,Python ......等。是O(n)还是O(1),其中'n'是移位的位数。我不是在寻找一般答案,因为我知道实施细节会各不相同。我想知道哪些是恒定的花费时间O(1),并且需要花费O(n)时间。

1 个答案:

答案 0 :(得分:2)

在Java中,原始整数类型具有固定宽度,即64,32,16位。比特数的移位以比特数为模。因此,出于实际目的,您可以假设位移是恒定时间,即使1L << 63您必须进行63次单独移位。

同样适用于语言类型可映射到机器类型的任何语言/ CPU组合。

Java也有BigInteger类型,其他语言也有任意大小的整数类型,其中数字可以有几乎任意数量的位。我的猜测是这种情况的转变是O(n),其中n是BigInteger中的位数。