Function integer-length

Syntax:

integer-length integer number-of-bits

Arguments and Values:

integer—an integer.

number-of-bits—a non-negative integer.

Description:

12.7.0 22Returns the number of bits needed to represent integer in binary two's-complement format.

Examples:

12.7.0 23

 (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

Side Effects:

None.

Affected By:

None.

Exceptional Situations:

Should signal an error of type type-error if integer is not an integer.

See Also:

None.

Notes:

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).