chess:programming:bit_operations
Chess - Programming - Bit Operations
Expression | Description | Example |
---|---|---|
x & y | AND the bits of x with those of y | 21 & 7 = 10101 & 00111 = 00101 = 5 |
x | y | OR the bits of x with those of y | 21 | 7 = 10101 | 00111 = 10111 = 23 |
x ^ y | XOR the bits of x with those of y | 21 ^ 7 = 10101 ^ 00111 = 10010 = 18 |
~x | Inverting (complementing) the bits of x (0 → 1 and 1 → 0) | ~7 = 11111111111111000 = 65528 |
x « y | Shift the bits of x to the left y positions | 25 « 3 = 10101 « 3 = 10101000 = 168 |
x » y | Shift the bits of x to the right y positions | 25 » 3 = 10101 » 3 = 00010 = 2 |
Get only even or odd bits
Take a number, say 12345678.
- In Binary, this is 00000000101111000110000101001110.
Apply an even mask against it:
00000000101111000110000101001110 & (n) 10101010101010101010101010101010 (0xAAAAAAAA) ———————————————————————————————— 00000000101010000010000000001010 (Contains all even bits)
Apply an odd mask against it:
00101101011001010111000110001001 & (n) 01010101010101010101010101010101 (0x55555555) ———————————————————————————————— 00000000000101000100000101000100 (Contains all odd bits)
NOTE: Use Masks.
- Mask 0xAAAAAAAA has all its even bits set.
- Its bitwise AND with a number will separate out the even bits.
- 1010 1010 1010 1010 1010 1010 1010 1010
- Mask 0x55555555 has all its odd bits set.
- Its bitwise AND with a number will separate out the odd bits.
- 1010 1010 1010 1010 1010 1010 1010 1010
chess/programming/bit_operations.txt · Last modified: 2021/11/05 09:55 by peter