integer-length (original) (raw)

ANSI Common Lisp 12 Numbers 12.2 Dictionary of Numbers

12.2.57 integer-length Function

Syntax:

integer-length integer number-of-bits

Arguments and Values:

integer - an integer.

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

Description:

Returns the number of bits needed to represent _integer_in binary two's-complement format.

Examples:

(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

Exceptional Situations:

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

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

Allegro CL Implementation Details:

None.