chess:programming:de_bruijn_sequence:8-bit_example
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
chess:programming:de_bruijn_sequence:8-bit_example [2021/11/30 00:40] – [Chess - Programming - de Bruijn Sequence - 8-bit Example] peter | chess:programming:de_bruijn_sequence:8-bit_example [2021/11/30 00:53] (current) – [Explaining the usage of this de Bruijn sequence] peter | ||
---|---|---|---|
Line 85: | Line 85: | ||
* This is to prevent overflow and to allow the whole to circulate naturally during multiplication (left shift operation). | * This is to prevent overflow and to allow the whole to circulate naturally during multiplication (left shift operation). | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Explaining the usage of this de Bruijn sequence ===== | ||
+ | |||
+ | <code cpp> | ||
+ | constexpr int table [8] = { 1 , 2 , 7 , 3 , 8 , 6 , 5 , 4 }; | ||
+ | </ | ||
+ | |||
+ | The c++ code above performs the following function. | ||
+ | |||
+ | * It takes a number from 1 to 8 to lookup. | ||
+ | * It multiplies this number by 0x1D, which is 29 Decimal. | ||
+ | * It right-shifts this by 5 to determine the specific bit position of that lookup value. | ||
+ | |||
+ | ^Lookup^Lookup multiple by the magic number^Right-shifted by the offset^ | ||
+ | ^:::^(29 in this example)^(5 in this example)^ | ||
+ | |1|29|0| | ||
+ | |2|58|1| | ||
+ | |7|203|6| | ||
+ | |3|87|2| | ||
+ | |8|232|7| | ||
+ | |6|174|5| | ||
+ | |5|145|4| | ||
+ | |4|116|3| | ||
+ | |||
+ | <WRAP info> | ||
+ | **NOTE:** This shows that: | ||
+ | |||
+ | * A lookup of **1** returns 0, which is the first bit. | ||
+ | * A lookup of **2** returns 1, which is the second bit. | ||
+ | * A lookup of **3** returns 2, which is the third bit. | ||
+ | * ...and so on. | ||
+ | |||
+ | Every lookup returns a unique and distinct value. | ||
</ | </ |
chess/programming/de_bruijn_sequence/8-bit_example.1638232807.txt.gz · Last modified: 2021/11/30 00:40 by peter