64-Bit Bitfield Cheat Sheet
Just as a cheat sheet for me, a 64-Bit Bitfield in Dec and Hex.
| Bit | Int | Hex |
| 1 | 1 | 0x1 |
| 2 | 2 | 0x2 |
| 3 | 4 | 0x4 |
| 4 | 8 | 0x8 |
| 5 | 16 | 0x10 |
| 6 | 32 | 0x20 |
| 7 | 64 | 0x40 |
| 8 | 128 | 0x80 |
| 9 | 256 | 0x100 |
| 10 | 512 | 0x200 |
| 11 | 1024 | 0x400 |
| 12 | 2048 | 0x800 |
| 13 | 4096 | 0x1000 |
| 14 | 8192 | 0x2000 |
| 15 | 16384 | 0x4000 |
| 16 | 32768 | 0x8000 |
| 17 | 65536 | 0x10000 |
| 18 | 131072 | 0x20000 |
| 19 | 262144 | 0x40000 |
| 20 | 524288 | 0x80000 |
| 21 | 1048576 | 0x100000 |
| 22 | 2097152 | 0x200000 |
| 23 | 4194304 | 0x400000 |
| 24 | 8388608 | 0x800000 |
| 25 | 16777216 | 0x1000000 |
| 26 | 33554432 | 0x2000000 |
| 27 | 67108864 | 0x4000000 |
| 28 | 134217728 | 0x8000000 |
| 29 | 268435456 | 0x10000000 |
| 30 | 536870912 | 0x20000000 |
| 31 | 1073741824 | 0x40000000 |
| 32 | 2147483648 | 0x80000000 |
| 33 | 4294967296 | 0x100000000 |
| 34 | 8589934592 | 0x200000000 |
| 35 | 17179869184 | 0x400000000 |
| 36 | 34359738368 | 0x800000000 |
| 37 | 68719476736 | 0x1000000000 |
| 38 | 137438953472 | 0x2000000000 |
| 39 | 274877906944 | 0x4000000000 |
| 40 | 549755813888 | 0x8000000000 |
| 41 | 1099511627776 | 0x10000000000 |
| 42 | 2199023255552 | 0x20000000000 |
| 43 | 4398046511104 | 0x40000000000 |
| 44 | 8796093022208 | 0x80000000000 |
| 45 | 17592186044416 | 0x100000000000 |
| 46 | 35184372088832 | 0x200000000000 |
| 47 | 70368744177664 | 0x400000000000 |
| 48 | 140737488355328 | 0x800000000000 |
| 49 | 281474976710656 | 0x1000000000000 |
| 50 | 562949953421312 | 0x2000000000000 |
| 51 | 1125899906842624 | 0x4000000000000 |
| 52 | 2251799813685248 | 0x8000000000000 |
| 53 | 4503599627370496 | 0x10000000000000 |
| 54 | 9007199254740992 | 0x20000000000000 |
| 55 | 18014398509481984 | 0x40000000000000 |
| 56 | 36028797018963968 | 0x80000000000000 |
| 57 | 72057594037927936 | 0x100000000000000 |
| 58 | 144115188075855872 | 0x200000000000000 |
| 59 | 288230376151711744 | 0x400000000000000 |
| 60 | 576460752303423488 | 0x800000000000000 |
| 61 | 1152921504606846976 | 0x1000000000000000 |
| 62 | 2305843009213693952 | 0x2000000000000000 |
| 63 | 4611686018427387904 | 0x4000000000000000 |
| 64 | 9223372036854775808 | 0x8000000000000000 |
Checking if a bit is set:
// AND: Only return 1 if both bits are 1 // 0011 & 0100 = 0000 // 0111 & 0100 = 0100 isSet = (value & 0x4) == 0x4; isSet = (value & 0x4) > 0;
Setting a bit:
// OR: If either operand is 1, return 1. // 0011 | 0100 = 0111 newvalue = oldvalue | 0x4; // |=
Unsetting a bit:
// NOT: Invert the Bits // ~0100 = 1011 // AND: Return 1 if both bits are 1 // 0011 & 1011 = 0011 // 0111 & 1011 = 0011 newvalue = oldvalue & (~0x4) // &= ~0x4;
Toggling a bit:
// XOR: If both bits are equal, return 0 // 0111 ^ 0100 = 0011 // 0011 ^ 0100 = 0111 newvalue = oldvalue ^ 0x4; // ^=
August 2nd, 2010 in
Development