BitVecNot
- Function
- August 22, 2025
Table of Contents
BitVecNot
BitVecNot
Description
Perform bitwise NOT operation on a bitvector. Result is stored in the first bitvector.
Parameters
Name | Direction | Description |
---|---|---|
result | out | Bitvector to store result in |
bv | in | Bitvector operand |
Usage example (from documentation)
BitVecNot(&result, &flags);
Usage example (Cross-references)
- In
BitVec.c:499
:
}
void BitVecNot(BitVec *result, BitVec *bitvec) {
ValidateBitVec(result);
ValidateBitVec(bitvec);
// Test BitVecNot function
bool test_bitvec_not(void) {
printf("Testing BitVecNot\n");
BitVec bv = BitVecInit();
// Perform NOT operation
BitVecNot(&result, &bv);
// Expected result: 0101 (NOT 1010)
// Test NOT on various sizes
BitVecClear(&bv1);
BitVecNot(&result_bv, &bv1);
result = result && (result_bv.length == 0);
BitVecPush(&bv1, true);
BitVecNot(&result_bv, &bv1);
result = result && (BitVecGet(&result_bv, 0) == false);
}
BitVecNot(&result, &bv1);
test_result = test_result && (result.length == 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 && (result.length == 1000);
// Test NULL operand - should abort
BitVecNot(&result, NULL);
BitVecDeinit(&result);
// Test BitVecNot function
bool test_bitvec_not(void) {
printf("Testing BitVecNot\n");
BitVec bv = BitVecInit();
// Perform NOT operation
BitVecNot(&result, &bv);
// Expected result: 0101 (NOT 1010)
// Test NOT on various sizes
BitVecClear(&bv1);
BitVecNot(&result_bv, &bv1);
result = result && (result_bv.length == 0);
BitVecPush(&bv1, true);
BitVecNot(&result_bv, &bv1);
result = result && (BitVecGet(&result_bv, 0) == false);
}
BitVecNot(&result, &bv1);
test_result = test_result && (result.length == 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 && (result.length == 1000);
// Test NULL operand - should abort
BitVecNot(&result, NULL);
BitVecDeinit(&result);