Bitwise
Set And Clear Bits
| sets a bit and & with an inverted mask clears a bit.
set bit
`value | mask` turns on the bits named by the mask.
clear bit
`value & ~mask` turns off the bits named by the mask.
Set And Clear Bits
set_clear_bits.c
Replay: real traced execution (multi-file project)
#include <stdio.h>
int main(void) {
int flags = 1;
flags = flags | 2;
flags = flags & ~1;
printf("flags=%d\n", flags);
return 0;
}
#include <stdio.h>
int main(void) {
int flags = 0;
flags = flags | 2;
flags = flags & ~1;
printf("flags=%d\n", flags);
return 0;
}
#include <stdio.h>
int main(void) {
int flags = 7;
flags = flags | 2;
flags = flags & ~1;
printf("flags=%d\n", flags);
return 0;
}
flags ← 1
3int main(void) {4 int flags→ 1 = 1; //@flags=0, 75 flags→ 3 = flags | 2;6 flags→ 2 = flags & ~1;78 printf("flags=%d\n", flags2);9 return 0;10}outputflags=2
flags ← 0
3int main(void) {4 int flags→ 0 = 0;5 flags→ 2 = flags | 2;6 flags2 = flags & ~1;78 printf("flags=%d\n", flags2);9 return 0;10}outputflags=2
flags ← 7
3int main(void) {4 int flags→ 7 = 7;5 flags7 = flags | 2;6 flags→ 6 = flags & ~1;78 printf("flags=%d\n", flags6);9 return 0;10}outputflags=6