BitVecNot
Description
Perform bitwise NOT operation on a bitvector. Result is stored in result.
Parameters
| Name | Direction | Description |
|---|---|---|
result |
out | Bitvector to store result in. |
bv |
in | Bitvector operand. |
Usage example (from documentation)
BitVecNot(&result, &flags);Success
Returns to the caller. result->length == bv->length; each bit result[i] == !bv[i]. The operand bv is unchanged.
Failure
Function cannot fail. Invalid bitvectors are caller bugs and abort via LOG_FATAL.
Usage example (Cross-references)
Usage examples (Cross-references)
- In
BitVec.c:582:
}
void BitVecNot(BitVec *result, BitVec *bitvec) {
ValidateBitVec(result);
ValidateBitVec(bitvec); DefaultAllocator alloc = DefaultAllocatorInit();
WriteFmt("Testing BitVecNot\n");
BitVec bv = BitVecInit(ALLOCATOR_OF(&alloc));
// Perform NOT operation
BitVecNot(&result, &bv);
// Expected result: 0101 (NOT 1010)
// Test NOT on various sizes
BitVecClear(&bv1);
BitVecNot(&result_bv, &bv1);
result = result && (BitVecLen(&result_bv) == 0);
BitVecPush(&bv1, true);
BitVecNot(&result_bv, &bv1);
result = result && (BitVecGet(&result_bv, 0) == false); }
BitVecNot(&result, &bv1);
test_result = test_result && (BitVecLen(&result) == 100);
// Test NOT(NOT(A)) = A
BitVecNot(&result, &bv1); // result = NOT(A)
BitVecNot(&result, &result); // result = NOT(NOT(A))
// Test NOT(NOT(A)) = A
BitVecNot(&result, &bv1); // result = NOT(A)
BitVecNot(&result, &result); // result = NOT(NOT(A))
bool double_not = true;
// Test NOT on large data
BitVecNot(&result, &bv1);
test_result = test_result && (BitVecLen(&result) == 1000);
// Test NULL operand - should abort
BitVecNot(&result, NULL);
BitVecDeinit(&result); DefaultAllocator alloc = DefaultAllocatorInit();
WriteFmtLn("Testing BitVecNot");
BitVec bv = BitVecInit(ALLOCATOR_OF(&alloc));
// Perform NOT operation
BitVecNot(&result, &bv);
// Expected result: 0101 (NOT 1010)
// Test NOT on various sizes
BitVecClear(&bv1);
BitVecNot(&result_bv, &bv1);
result = result && (BitVecLen(&result_bv) == 0);
BitVecPush(&bv1, true);
BitVecNot(&result_bv, &bv1);
result = result && (BitVecGet(&result_bv, 0) == false); }
BitVecNot(&result, &bv1);
test_result = test_result && (BitVecLen(&result) == 100);
// Test NOT(NOT(A)) = A
BitVecNot(&result, &bv1); // result = NOT(A)
BitVecNot(&result, &result); // result = NOT(NOT(A))
// Test NOT(NOT(A)) = A
BitVecNot(&result, &bv1); // result = NOT(A)
BitVecNot(&result, &result); // result = NOT(NOT(A))
bool double_not = true;
// Test NOT on large data
BitVecNot(&result, &bv1);
test_result = test_result && (BitVecLen(&result) == 1000);
// Test NULL operand - should abort
BitVecNot(&result, NULL);
BitVecDeinit(&result);
Last updated on