BitVecCountZeros
- Function
- August 22, 2025
Table of Contents
BitVecCountZeros
BitVecCountZeros
Description
Count number of bits set to 0 in bitvector.
Parameters
Name | Direction | Description |
---|---|---|
bv | in | Bitvector to count zeros in |
Usage example (from documentation)
u64 zeros = BitVecCountZeros(&flags);
Usage example (Cross-references)
- In
BitVec.c:449
:
}
u64 BitVecCountZeros(BitVec *bitvec) {
ValidateBitVec(bitvec);
return bitvec->length - BitVecCountOnes(bitvec);
// Count true and false bits
bool result = (BitVecCountOnes(&bv) == 3) && (BitVecCountZeros(&bv) == 2);
BitVecDeinit(&bv);
// Test empty bitvector
result = result && (BitVecCountOnes(&bv) == 0);
result = result && (BitVecCountZeros(&bv) == 0);
// Test single bit
BitVecPush(&bv, true);
result = result && (BitVecCountOnes(&bv) == 1);
result = result && (BitVecCountZeros(&bv) == 0);
// Test all same bits
}
result = result && (BitVecCountOnes(&bv) == 100);
result = result && (BitVecCountZeros(&bv) == 0);
BitVecDeinit(&bv);
// Count and verify
result = result && (BitVecCountOnes(&bv) == 3);
result = result && (BitVecCountZeros(&bv) == 2);
// Flip some bits and verify
result = result && (BitVecCountOnes(&bv) == 5);
result = result && (BitVecCountZeros(&bv) == 0);
BitVecDeinit(&bv);
// Verify counts
result = result && (BitVecCountOnes(&bv) == 500);
result = result && (BitVecCountZeros(&bv) == 500);
// Flip some bits and verify
result = result && (BitVecCountOnes(&bv) == 500);
result = result && (BitVecCountZeros(&bv) == 500);
BitVecDeinit(&bv);
// Test count operations
result = result && (BitVecCountOnes(&bv) == 1);
result = result && (BitVecCountZeros(&bv) == 1);
BitVecDeinit(&bv);
result = result && (BitVecCountOnes(&bv) == expected_true_count);
result = result && (BitVecCountZeros(&bv) == (size - expected_true_count));
// Flip every 7th bit
BitVecPush(&bv, false);
}
result = result && (BitVecCountZeros(&bv) == 64);
result = result && (BitVecCountOnes(&bv) == 0);
}
result = result && (BitVecCountOnes(&bv) == 64);
result = result && (BitVecCountZeros(&bv) == 0);
// Test checkerboard pattern
}
result = result && (BitVecCountOnes(&bv) == 32);
result = result && (BitVecCountZeros(&bv) == 32);
// Test sparse pattern (every 8th bit)
}
result = result && (BitVecCountOnes(&bv) == 8);
result = result && (BitVecCountZeros(&bv) == 56);
// Test random-like pattern (using simple algorithm)
// Test counting
bool result = (BitVecCountOnes(&bv) == 3);
result = result && (BitVecCountZeros(&bv) == 4);
// Test with all ones
result = result && (BitVecCountOnes(&bv) == 3);
result = result && (BitVecCountZeros(&bv) == 0);
// Clean up
// Test count on empty bitvec
result = result && (BitVecCountOnes(&bv) == 0);
result = result && (BitVecCountZeros(&bv) == 0);
// Test count with single bit
BitVecPush(&bv, true);
result = result && (BitVecCountOnes(&bv) == 1);
result = result && (BitVecCountZeros(&bv) == 0);
BitVecClear(&bv);
BitVecPush(&bv, false);
result = result && (BitVecCountOnes(&bv) == 0);
result = result && (BitVecCountZeros(&bv) == 1);
// Test count with large uniform data
}
result = result && (BitVecCountOnes(&bv) == 1000);
result = result && (BitVecCountZeros(&bv) == 0);
BitVecDeinit(&bv);
result = result && (BitVecCountOnes(&bv) == 0);
result = result && (BitVecCountZeros(&bv) == 100);
// Verify all bits are false
result = result && (BitVecCountOnes(&bv) == 100);
result = result && (BitVecCountZeros(&bv) == 0);
// Test checkerboard pattern
result = result && (BitVecCountOnes(&bv) == 50);
result = result && (BitVecCountZeros(&bv) == 50);
// Verify checkerboard pattern