BitVecCountZeros

Table of Contents

BitVecCountZeros

Description

Count number of bits set to 0 in bitvector.

Parameters

NameDirectionDescription
bvinBitvector to count zeros in

Usage example (from documentation)

  u64 zeros = BitVecCountZeros(&flags);

Usage example (Cross-references)

    }
    
    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

Share :

Related Posts

BitVecEmpty

BitVecEmpty Description Check if bitvector is empty.

Read More

BitVecLen

BitVecLen Description Get number of bits currently in bitvector.

Read More

BitVecGet

BitVecGet Description Get the value of bit at given index in bitvector.

Read More