Next: , 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)))))))))