srfi.60
- Integers as bits ¶This srfi provides bit operations on integers, regarding them
as 2’s complement representation. It is compatible to SLIB’s logical
module.
The newer SRFI-151 (see scheme.bitwise
- R7RS bitwise operations) provides the same
functionality and more, with more consistent naming. We recommend
new code to use SRFI-151, while we keep SRFI-60 for the backward
compatibility.
The following procedures are Gauche built-in. See Basic bitwise operations, for the description.
lognot logand logior logxor logtest logcount integer-length logbit? copy-bit bit-field copy-bit-field ash
The following procedures are defined in SRFI-151.
See scheme.bitwise
- R7RS bitwise operations, for the description.
bitwise-not bitwise-and bitwise-ior bitwise-xor arithmetic-shift bit-count bitwise-if bit-set? copy-bit first-set-bit
We describe procedures that are unique in SRFI-60 below.
[SRFI-60]{srfi.60
}
Same as bitwise-if
(see scheme.bitwise
- R7RS bitwise operations).
[SRFI-60]{srfi.60
}
Same as builtin logtest
(see Basic bitwise operations).
It is also called any-bit-set?
in SRFI-151 (see scheme.bitwise
- R7RS bitwise operations).
[SRFI-60]{srfi.60
}
It is also called as first-set-bit
in this srfi, which is also
in SRFI-151 (see scheme.bitwise
- R7RS bitwise operations).
This is equivalent to Gauche’s built-in twos-exponent-factor
(see Basic bitwise operations).
[SRFI-60]{srfi.60
}
This is equivalent to bit-field-rotate
in SRFI-151
(see scheme.bitwise
- R7RS bitwise operations).
[SRFI-60]{srfi.60
}
This is equivalent to bit-field-reverse
in SRFI-151
(see scheme.bitwise
- R7RS bitwise operations).
[SRFI-60]{srfi.60
}
Breaks n to each bits, representing 1
as #t
and
0
as #f
, LSB last, and returns a list of them.
If a nonnegative integer len is given, it specifies the length
of the result. If it is omitted, (integer-length n)
is used.
(integer->list 10) ⇒ (#t #f #t #f) (integer->list 10 6) ⇒ (#f #f #t #f #t #f)
SRFI-151 has similar procedure bits->list
, with a reversed bit
order (LSB first) (see scheme.bitwise
- R7RS bitwise operations).
[SRFI-60]{srfi.60
}
Takes a list of boolean values, replaces the true value for 1
and the false value for 0
, and compose an integer regarding
each value as a binary digit. If n is nonnegative integer,
(eqv? (list->integer (integer->list n)) n)
is true.
(list->integer '(#f #t #f #t #f)) ⇒ 10
SRFI-151 has similar procedure list->bits
, with a reversed bit
order (LSB first) (see scheme.bitwise
- R7RS bitwise operations).
[SRFI-60]{srfi.60
}
≡ (list->integer (list bool …))
SRFI-151 has similar procedure bits
, with a reversed bit
order (LSB first) (see scheme.bitwise
- R7RS bitwise operations).