; trailing zero-bits

(define (zerobits n)
  (let loop ((n n) (b 0))
    (if (odd? n) b (loop (/ n 2) (+ b 1)))))

(display (zerobits 18)) (display " ") 
(display (zerobits 48)) (newline)

(define (zerobits n)
  (vector-ref (vector 32 0 1 26 2 23 27 0 3 16 24 30 28 11 0 13
      4 7 17 0 25 22 31 15 29 10 12 6 0 21 14 9 5 20 8 19 18)
    (modulo (bitwise-and n (- n)) 37)))

(display (zerobits 18)) (display " ") 
(display (zerobits 48)) (newline)