我想知道是否有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)运算。