De Bruijn-like sequence for `2^n - 1`: how is it constructed?

前端 未结 3 2060
心在旅途
心在旅途 2020-12-13 00:24

I\'m looking at the entry Find the log base 2 of an N-bit integer in O(lg(N)) operations with multiply and lookup from Bit Twiddling hacks.

I can easily see how t

3条回答
  •  盖世英雄少女心
    2020-12-13 01:24

    From: http://www.stmintz.com/ccc/index.php?id=306404

    130329821
    0x07C4ACDD
    00000111110001001010110011011101B
    
    bit 31 - bit 27   00000  0
    bit 30 - bit 26   00001  1
    bit 29 - bit 25   00011  3
    bit 28 - bit 24   00111  7
    bit 27 - bit 23   01111 15
    bit 26 - bit 22   11111 31
    bit 25 - bit 21   11110 30
    bit 24 - bit 20   11100 28
    bit 23 - bit 19   11000 24
    bit 22 - bit 18   10001 17
    bit 21 - bit 17   00010  2
    bit 20 - bit 16   00100  4
    bit 19 - bit 15   01001  9
    bit 18 - bit 14   10010 18
    bit 17 - bit 13   00101  5
    bit 16 - bit 12   01010 10
    bit 15 - bit 11   10101 21
    bit 14 - bit 10   01011 11
    bit 13 - bit  9   10110 22
    bit 12 - bit  8   01100 12
    bit 11 - bit  7   11001 25
    bit 10 - bit  6   10011 19
    bit  9 - bit  5   00110  6
    bit  8 - bit  4   01101 13
    bit  7 - bit  3   11011 27
    bit  6 - bit  2   10111 23
    bit  5 - bit  1   01110 14
    bit  4 - bit  0   11101 29
    bit  3 - bit 31   11010 26 
    bit  2 - bit 30   10100 20
    bit  1 - bit 29   01000  8
    bit  0 - bit 28   10000 16
    

    It seems to me that 0x07C4ACDD is a 5-bit de Bruijn sequence.

提交回复
热议问题