寻找一个c# bitarray的按位操作
本文关键字:bitarray 位操作 一个 寻找 | 更新日期: 2023-09-27 18:05:42
我正在尝试对BitArray执行按位操作,这将导致:
,,, 1010,
,, 0011,
1000年=,
所以当第一个位被设置并且对应的位没有被设置(1-0)时,它返回1。所有其他场景(0-0、1-1、0-1)的结果为0。
我如何实现这一点,有或没有位操作?
性能至关重要
应该可以:
假设ba1是第一个BitArray, ba2是第二个。
ba1.And (ba2.Not ())
应该在O(2N)时间内使ba1处于您所寻找的状态。(但是你的两个BitArrays都将被修改——如果你需要通过复制它们来保存源BitArrays,则需要更多的工作和时间)
如果性能很重要,考虑到内存和性能开销,您可能想要考虑根本不使用BitArray,而是使用BitVector32或直接对底层字节执行操作:
byte a = 0x3a; // 0011 0101
byte b = 0xa3; // 1010 0011
byte r = a & (~b); // 0001 0100
如果你发现BitArray的性能适合你的需要,那么没有必要过早优化;但是,如果您发现性能不合适,您可能需要考虑替换BitArray。