| bitwise-bit-count(3scm) | Scheme Programmer's Manual | bitwise-bit-count(3scm) |
NAME
bitwise-bit-count - population count
LIBRARY
(import (rnrs)) ;R6RS (import (rnrs arithmetic bitwise)) ;R6RS (import (rnrs arithmetic fixnums)) ;R6RS
SYNOPSIS
(bitwise-bit-count ei) (fxbit-count fx)
DESCRIPTION
If the argument is non-negative, this procedure returns the number of 1 bits in its two's complement representation. Otherwise it returns the result of the following computation:
(bitwise-not (bitwise-bit-count (bitwise-not ei)))
RETURN VALUES
Returns a single exact integer object.
EXAMPLES
(bitwise-bit-count #b1)
=> 1
(bitwise-bit-count #b1000)
=> 1
(bitwise-bit-count #b1001)
=> 2
(bitwise-bit-count #b-1001)
=> -2
APPLICATION USAGE
This procedure is used to compute the Hamming distance. It's also used in Hash Array Mapped Tries and other applications.
COMPATIBILITY
This procedure is new in R6RS. SRFI-151 has the similar procedure bit-count.
ERRORS
This procedure can raise exceptions with the following condition types:
- &assertion (R6RS)
- The wrong number of arguments was passed or an argument was outside its domain. For fxbit-count the argument must be a fixnum.
SEE ALSO
bitwise-first-bit-set(3scm), bitwise-length(3scm)
STANDARDS
R6RS
HISTORY
This procedure can be implemented with the popcount procedure in x86-64 processors. This instruction appeared even in some early computers like the IBM Stretch (1961).
AUTHORS
This page is part of the scheme-manpages project. It includes materials from the RnRS documents. More information can be found at https://weinholt.se/scheme/manpages/.
| 2021-03-08 |