integer-length integer ⇒  number-of-bits
Returns the number of bits needed to represent integer in binary two’s-complement format.
 (integer-length 0) ⇒  0
 (integer-length 1) ⇒  1
 (integer-length 3) ⇒  2
 (integer-length 4) ⇒  3
 (integer-length 7) ⇒  3
 (integer-length -1) ⇒  0
 (integer-length -4) ⇒  2
 (integer-length -7) ⇒  3
 (integer-length -8) ⇒  3
 (integer-length (expt 2 9)) ⇒  10
 (integer-length (1- (expt 2 9))) ⇒  9
 (integer-length (- (expt 2 9))) ⇒  9
 (integer-length (- (1+ (expt 2 9)))) ⇒  10
Should signal an error of type type-error if integer is not an integer.
This function could have been defined by:
(defun integer-length (integer)
  (ceiling (log (if (minusp integer)
                    (- integer)
                    (1+ integer))
                2)))
If integer is non-negative, then its value can be represented
in unsigned binary form in a field whose width in bits is
no smaller than (integer-length integer).
Regardless of the sign of integer, its value can be
represented in signed binary two’s-complement form in a field
whose width in bits is no smaller than (+ (integer-length integer) 1).