这些函数为什么会缺失呢?
虽然这些函数在BigInteger
中确实存在,但由于BigInteger
采用了不可变的设计模式,所以这些函数通常速度非常慢。而且BitSet
更好一些,因为它是可变的,但我真的很需要long
类型的左移(<<
)和右移(>>>
)函数。对于BitSet
,就地移位也很有用,以及循环旋转。
我看到了Shifting a Java BitSet的回答(使用get(off, len)
进行位移;但这需要复制)。
别误会我的意思,我知道在哪里报告错误。我只是想知道是否有特定的原因可以省略它们,例如某种设计模式或概念。特别是它们确实包含在BigInteger
中。
long
也不是字符串。但它有移位运算符。而String
实际上没有。get(i,j)
的语义基本上与substring
相同,并且对于long
也不可用... - Has QUIT--Anony-Mousselong[]
。但是我怀疑从long[]
到管理long[]
的对象的开销是否很大。对于Java而言,long[]
也是一个对象,不是本地对象。因此,一旦你超过了64位的限制,应该不会有太大的区别。 - Has QUIT--Anony-Mousse