Search Top Index
HELP BITVECTORS John Williams, Oct 1986 Updated A.Sloman May 1990 The package LIB * BITVECTORS creates a data class "bitvector" - vector type objects whose elements may be either 1 or 0. This data type corresponds to the Common Lisp type SIMPLE-BIT-VECTOR. The following functions are provided for creating and accessing bitvectors: consbitvector(<integer:N>) -> <bitvector> Constructs a bit vector from the top N items on the stack destbitvector(<bitvector>) Stacks the elements and length of <bitvector> initbitvector(<integer:N>) -> <bitvector> Creates a <bitvector> of length N, whose elements are all 0 isbitvector(<item>) -> <boolean> -true- if <item> is a bitvector, -false- otherwise subscrbitvector(<integer:I>, <bitvector:B>) -> <1 | 0> <1 | 0> -> subscrbitvector(<integer:I>, <bitvector:B>) Returns/updates the I'th bit in B fast_subscrbitvector(<integer:I>, <bitvector:B>) -> <1 | 0> <1 | 0> -> fast_subscrbitvector(<integer:I>, <bitvector:B>) Fast, non-checking version of -subscrbitvector- bitvector_key -> <key> Constant: the key of bitvector type objects -- Examples ------------------------------------------------------------ lib bitvectors; ;;; Make the package available vars bv = consbitvector(1, 0, 1, 0, 1, 5); bv => ** <bitvector 10101> destbitvector(bv) => ** 1 0 1 0 1 5 explode(bv) => fill(0,0,0,0,1, bv) => ** <bitvector 00001> bv => ** <bitvector 00001> isbitvector(bv) => ** <true> 1 -> subscrbitvector(2, bv); bv => ** <bitvector 01001> datakey(bv) == bitvector_key => ** <true> ;;; create a bitvector of length 100 with 1 in ith position only ;;; if 13 divides i. vars i, newbv; cons_with consbitvector {% for i from 1 to 100 do if i mod 13 == 0 then 1 else 0 endif endfor %} -> newbv; newbv => ** <bitvector 0000000000001000000000000100000000000010000000000001000 000000000100000000000010000000000001000000000> Bitvectors are indexable by number newbv(39) => ** 1 -- See also ------------------------------------------------------------ HELP * VECTORS HELP * VECTORCLASS REF * VECTORS REF * DATA REF * VMCODE/sysFIELD --- C.all/help/bitvectors --- Copyright University of Sussex 1990. All rights reserved. ----------