trailingZeros:: Int -> Int
trailingZeros n
   | n == 0        = 0 
   | n  .&. 1 /= 0 = 0
   | otherwise = 1 + trailingZeros (n `shiftR` 1)
trailingZeros:: Int -> Int
trailingZeros n
   | n == 0        = 0 
   | n  .&. 1 /= 0 = 0
   | otherwise = 1 + trailingZeros (n `shiftR` 1)
trailingZeros n
   | n == 0        = 0 
   | n  .&. 1 /= 0 = 0
   | otherwise = 1 + trailingZeros (n `shiftR` 1)