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

BitVecFlip

BitVecFlip Description Flip the value of bit at given index in bitvector. Changes 0 to 1 and 1 to 0.

Read More

BitVecEmpty

BitVecEmpty Description Check if bitvector is empty.

Read More

BitVecCapacity

BitVecCapacity Description Get capacity of bitvector in bits.

Read More