title: Hexadecimal based FizzBuzz in Python
body: <p>I'm sure that for most of you should be familiar with what FizzBuzz is.</p>
  
  <p>For those who don't know what I'm stating here. Here is what FizzBuzz is:</p>
  
  <blockquote>
    <p>Write a program that prints the numbers from 1 to 100. But for multiples of three print "Fizz" instead of the number and for the multiples of five print "Buzz". For numbers which are multiples of both three and five print "FizzBuzz".</p>
  </blockquote>
  
  <p>To most of you, this may be very easy to create.</p>
  
  <p>Though after browsing online, I've found some posts where they were challenged not to use the modulus operator. </p>
  
  <p>I found this python code interesting:</p>
  
  <pre><code>m = [None, "Fizz", "Buzz", "FizzBuzz"]
  v = 0x30490610
  for i in range(1, 101):
      j = v &amp; 3
      print(m[j] if j else i)
      v = v &gt;&gt; 2 | j &lt;&lt; 28
  </code></pre>
  
  <p>The result:</p>
  
  <pre><code>1
  2
  Fizz
  4
  Buzz
  Fizz
  7
  8
  Fizz
  Buzz
  11
  Fizz
  13
  14
  FizzBuzz
  16
  17
  Fizz
  19
  Buzz
  Fizz
  22
  23
  Fizz
  Buzz
  26
  Fizz
  28
  29
  FizzBuzz
  31
  32
  Fizz
  34
  Buzz
  Fizz
  37
  38
  Fizz
  Buzz
  41
  Fizz
  43
  44
  FizzBuzz
  46
  47
  Fizz
  49
  Buzz
  Fizz
  52
  53
  Fizz
  Buzz
  56
  Fizz
  58
  59
  FizzBuzz
  61
  62
  Fizz
  64
  Buzz
  Fizz
  67
  68
  Fizz
  Buzz
  71
  Fizz
  73
  74
  FizzBuzz
  76
  77
  Fizz
  79
  Buzz
  Fizz
  82
  83
  Fizz
  Buzz
  86
  Fizz
  88
  89
  FizzBuzz
  91
  92
  Fizz
  94
  Buzz
  Fizz
  97
  98
  Fizz
  Buzz
  </code></pre>
  
  <p>My question is how does it do it? </p>
  
  <p>I understand that the 'v' variable contains a hexadecimal value. </p>
  
  <p>How does that achieve creating FizzBuzz? How would you explain this to a total beginner?</p>