Selecting Bit String Components - MIT/GNU Scheme 9.0.1
Description: MIT/GNU Scheme 9.0.1

Next: Cutting and Pasting Bit Strings, Previous: Construction of Bit Strings, Up: Bit Strings

### 9.2 Selecting Bit String Components

— procedure: bit-string? object

> Returns `#t` if object is a bit string; otherwise returns `#f`.

— procedure: bit-string-length bit-string

> Returns the length of bit-string.

— procedure: bit-string-ref bit-string k

> Returns `#t` if the kth bit is 1; otherwise returns `#f`. K must be a valid index of bit-string.

— procedure: bit-string-set! bit-string k

> Sets the kth bit in bit-string to 1 and returns an unspecified value. K must be a valid index of bit-string.

— procedure: bit-string-clear! bit-string k

> Sets the kth bit in bit-string to 0 and returns an unspecified value. K must be a valid index of bit-string.

— procedure: bit-substring-find-next-set-bit bit-string start end

> Returns the index of the first occurrence of a set bit in the substring of bit-string from start (inclusive) to end (exclusive). If none of the bits in the substring are set `#f` is returned. The index returned is relative to the whole bit string, not substring.

> The following procedure uses `bit-substring-find-next-set-bit` to find all the set bits and display their indexes:

>               (define (scan-bitstring bs)
>                 (let ((end (bit-string-length bs)))
>                   (let loop ((start 0))
>                     (let ((next
>                            (bit-substring-find-next-set-bit bs start end)))
>                       (if next
>                           (begin
>                             (write-line next)
>                             (if (< next end)
>                                 (loop (+ next 1)))))))))