Next: `srfi.64`

- A Scheme API for test suites, Previous: `srfi.55`

- Requiring extensions, Up: Library modules - SRFIs [Contents][Index]

`srfi.60`

- Integers as bits- Module:
**srfi.60**¶ -
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.

- Function:
**bitwise-merge***mask n0 n1*¶ [SRFI-60] {

`srfi.60`} Same as`bitwise-if`

(see`scheme.bitwise`

- R7RS bitwise operations).

- Function:
**any-bits-set?***mask n*¶ [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).

- Function:
**log2-binary-factors***n*¶ [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).

- Function:
**rotate-bit-field***n count start end*¶ [SRFI-60] {

`srfi.60`} This is equivalent to`bit-field-rotate`

in SRFI-151 (see`scheme.bitwise`

- R7RS bitwise operations).

- Function:
**reverse-bit-field***n start end*¶ [SRFI-60] {

`srfi.60`} This is equivalent to`bit-field-reverse`

in SRFI-151 (see`scheme.bitwise`

- R7RS bitwise operations).

- Function:
**integer->list***n :optional len*¶ [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).

- Function:
**list->integer***lis*¶ [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).

- Function:
**booleans->integer***bool …*¶ [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).

`srfi.64`

- A Scheme API for test suites, Previous: `srfi.55`

- Requiring extensions, Up: Library modules - SRFIs [Contents][Index]

DRAFT