我想知道是否有Bitvector32的按位运算符在O(1)时间内运行。我目前正在使用大尺寸的BitArray并使用在O(bitarray的大小)中运行的按位And,Or和Not。

我在互联网上搜索了此内容,但找不到答案。希望这里的人能为您服务!

最佳答案

将BitVector32转换为int是O(1)操作。 (reference
将int转换为BitVector32是O(1)操作。 (reference
在int上执行按位运算是O(1)运算。


从而,

var vectorAnd = new BitVector32(vector1.Data & vector2.Data);
var vectorOr = new BitVector32(vector1.Data | vector2.Data);
var vectorNot = new BitVector32(~vector1.Data);


都是O(1)运算。

10-03 00:09