public void TestBitset32() { Bitset32 a = default; Bitset32 b = default; a.Set(0); b.Set(1); Assert.AreEqual(1, a.ToUInt64()); Assert.AreEqual(2, b.ToUInt32()); Assert.AreEqual(3, (a | b).ToUInt64()); Assert.AreEqual(3, (a ^ b).ToUInt64()); Assert.AreEqual(0, (a & b).ToUInt64()); var c = ~a; Assert.False(c[0]); Assert.True(c.Any()); c |= a; Assert.True(c.All()); Assert.True(c[31]); Assert.AreEqual(c, c); Assert.AreNotEqual(c, a); c = ~c; Assert.True(c.None()); }
public void Bitset_Test32() { //位 7654 3210 //值 1001 1010 uint value = 2147483802; // 2147483802 10000000000000000000000010011010 Assert.AreEqual(false, Bitset32.GetBit(value, 0)); Assert.AreEqual(true, Bitset32.GetBit(value, 1)); Assert.AreEqual(true, Bitset32.GetBit(value, 4)); Assert.AreEqual(true, Bitset32.GetBit(value, 7)); Assert.AreEqual(true, Bitset32.GetBit(value, 31)); //index out of range Assert.AreEqual(false, Bitset32.GetBit(value, 32)); Assert.AreEqual(false, Bitset32.GetBit(value, 255)); //set Bitset32.SetBit(ref value, 5);// 2147483834 10000000000000000000000010111010 Assert.IsTrue(value == 2147483834); Assert.AreEqual(true, Bitset32.GetBit(value, 5)); //clear Bitset32.ClearBit(ref value, 5); Assert.IsTrue(value == 2147483802); Assert.AreEqual(false, Bitset32.GetBit(value, 5)); //obj Bitset32 bb = new Bitset32(2147483802); Assert.AreEqual(false, bb.GetBit(0)); Assert.AreEqual(true, bb.GetBit(1)); Assert.AreEqual(true, bb.GetBit(4)); Assert.AreEqual(true, bb.GetBit(7)); Assert.AreEqual(true, bb.GetBit(31)); //index out of range Assert.AreEqual(false, bb.GetBit(32)); //Assert.AreEqual(false, bb.GetBit(255)); //set bb.SetBit(5);// 2147483834 10000000000000000000000010111010 Assert.IsTrue(bb.Value == 2147483834); Assert.AreEqual(true, bb.GetBit(5)); //clear bb.ClearBit(5); Assert.IsTrue(bb.Value == 2147483802); Assert.AreEqual(false, bb.GetBit(5)); }