add bit fuckery
parent
2e2a01e5ba
commit
cd58af7f7c
@ -0,0 +1,33 @@
|
|||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int foo;
|
||||||
|
|
||||||
|
foo = 42;
|
||||||
|
|
||||||
|
/* Delete bit 5 */
|
||||||
|
foo &= ~(1 << 5);
|
||||||
|
assert(foo == 10);
|
||||||
|
foo &= ~(1 << 5);
|
||||||
|
assert(foo == 10);
|
||||||
|
|
||||||
|
/* Set bit 5 again */
|
||||||
|
foo |= (1 << 5);
|
||||||
|
assert(foo == 42);
|
||||||
|
foo |= (1 << 5);
|
||||||
|
assert(foo == 42);
|
||||||
|
|
||||||
|
/* Set bit 0 */
|
||||||
|
foo |= (1 << 0);
|
||||||
|
assert(foo == 43);
|
||||||
|
|
||||||
|
/* Delete bit 0 */
|
||||||
|
foo &= ~(1 << 0);
|
||||||
|
assert(foo == 42);
|
||||||
|
|
||||||
|
/* Toggle bit 5 */
|
||||||
|
foo ^= (1 << 5);
|
||||||
|
assert(foo == 10);
|
||||||
|
foo ^= (1 << 5);
|
||||||
|
assert(foo == 42);
|
||||||
|
}
|
@ -0,0 +1,37 @@
|
|||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
#define BIT_DEL(x, n) ((x) &= ~(1<<(n)))
|
||||||
|
#define BIT_SET(x, n) ((x) |= (1<<(n)))
|
||||||
|
#define BIT_TOGGLE(x, n) ((x) ^= (1<<(n)))
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int foo;
|
||||||
|
|
||||||
|
foo = 42;
|
||||||
|
|
||||||
|
/* Delete bit 5 */
|
||||||
|
BIT_DEL(foo, 5);
|
||||||
|
assert(foo == 10);
|
||||||
|
BIT_DEL(foo, 5);
|
||||||
|
assert(foo == 10);
|
||||||
|
|
||||||
|
/* Set bit 5 again */
|
||||||
|
BIT_SET(foo, 5);
|
||||||
|
assert(foo == 42);
|
||||||
|
BIT_SET(foo, 5);
|
||||||
|
assert(foo == 42);
|
||||||
|
|
||||||
|
/* Set bit 0 */
|
||||||
|
BIT_SET(foo, 0);
|
||||||
|
assert(foo == 43);
|
||||||
|
|
||||||
|
/* Delete bit 0 */
|
||||||
|
BIT_DEL(foo, 0);
|
||||||
|
assert(foo == 42);
|
||||||
|
|
||||||
|
/* Toggle bit 5 */
|
||||||
|
BIT_TOGGLE(foo, 5);
|
||||||
|
assert(foo == 10);
|
||||||
|
BIT_TOGGLE(foo, 5);
|
||||||
|
assert(foo == 42);
|
||||||
|
}
|
Loading…
Reference in New Issue