User Tools


Function LOGCOUNT

Syntax

  • logcount integernumber-of-on-bits

Arguments and Values

Description

Computes and returns the number of bits in the two's-complement binary representation of integer that are "on" or "set". If integer is negative, the 0 bits are counted; otherwise, the 1 bits are counted.

Examples

(logcount 0)

0

(logcount -1)

0

(logcount 7)

3

(logcount 13)

3 ; Two's-complement binary: ...0001101

(logcount -13)

2 ; Two's-complement binary: ...1110011

(logcount 30)

4 ; Two's-complement binary: ...0011110

(logcount -30)

4 ; Two's-complement binary: ...1100010

(logcount (expt 2 100))

1

(logcount (- (expt 2 100)))

100

(logcount (- (1+ (expt 2 100))))

1

Side Effects

None.

Affected By

None.

Exceptional Situations

Should signal type-error if its argument is not an integer.

See Also

None.

Notes

Even if the implementation does not represent integers internally in two's complement binary, logcount behaves as if it did.

The following identity always holds:

(logcount x) ≡ (logcount (- (1+ x))) ≡ (logcount (lognot x))