User Tools


Function INTEGER-LENGTH

Syntax

  • integer-length integernumber-of-bits

Arguments and Values

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

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