BitVecReverse

Table of Contents

BitVecReverse

Description

Reverse the order of all bits in bitvector. First bit becomes last, last becomes first, etc.

Parameters

NameDirectionDescription
bvinBitvector to reverse

Usage example (from documentation)

  BitVecReverse(&flags);

Usage example (Cross-references)

    }
    
    void BitVecReverse(BitVec *bv) {
    ValidateBitVec(bv);
    if (bv->length <= 1) {
    
    // Test NULL pointer - should abort
    BitVecReverse(NULL);
    
    return false;
    // Test BitVecReverse function
    bool test_bitvec_reverse(void) {
    WriteFmt("Testing BitVecReverse\n");
    
    BitVec bv = BitVecInit();
    
    // Reverse the bits
    BitVecReverse(&bv);
    
    // Expected result: 1101 (1011 reversed)
    
    bool test_bitvec_reverse_edge_cases(void) {
    WriteFmt("Testing BitVecReverse edge cases\n");
    
    BitVec bv     = BitVecInit();
    
    // Test reverse empty bitvec
    BitVecReverse(&bv);
    result = result && (bv.length == 0);
    // Test reverse single bit
    BitVecPush(&bv, true);
    BitVecReverse(&bv);
    result = result && (bv.length == 1);
    result = result && (BitVecGet(&bv, 0) == true);
    BitVecPush(&bv, true);
    BitVecPush(&bv, false);
    BitVecReverse(&bv);
    result = result && (BitVecGet(&bv, 0) == false);
    result = result && (BitVecGet(&bv, 1) == true);
    
    // Test double reverse (should restore original)
    BitVecReverse(&bv);
    result = result && (BitVecGet(&bv, 0) == true);
    result = result && (BitVecGet(&bv, 1) == false);
    // Test BitVecReverse function
    bool test_bitvec_reverse(void) {
    WriteFmtLn("Testing BitVecReverse");
    
    BitVec bv = BitVecInit();
    
    // Reverse the bits
    BitVecReverse(&bv);
    
    // Expected result: 1101 (1011 reversed)
    
    bool test_bitvec_reverse_edge_cases(void) {
    WriteFmtLn("Testing BitVecReverse edge cases");
    
    BitVec bv     = BitVecInit();
    
    // Test reverse empty bitvec
    BitVecReverse(&bv);
    result = result && (bv.length == 0);
    // Test reverse single bit
    BitVecPush(&bv, true);
    BitVecReverse(&bv);
    result = result && (bv.length == 1);
    result = result && (BitVecGet(&bv, 0) == true);
    BitVecPush(&bv, true);
    BitVecPush(&bv, false);
    BitVecReverse(&bv);
    result = result && (BitVecGet(&bv, 0) == false);
    result = result && (BitVecGet(&bv, 1) == true);
    
    // Test double reverse (should restore original)
    BitVecReverse(&bv);
    result = result && (BitVecGet(&bv, 0) == true);
    result = result && (BitVecGet(&bv, 1) == false);
    
    // Test NULL pointer - should abort
    BitVecReverse(NULL);
    
    return false;

Share :

Related Posts

BitVecSignedCompare

BitVecSignedCompare Description Compare two bitvectors as signed integers (MSB is sign bit).

Read More

BitVecShiftLeft

BitVecShiftLeft Description Shift all bits in bitvector to the left by specified positions. New bits on the right are filled with zeros.

Read More

BitVecAnd

BitVecAnd Description Perform bitwise AND operation between two bitvectors. Result is stored in the first bitvector.

Read More