“ computer ” means any device capable of performing the methods , producing compressed bitmaps as described herein , or performing logical comparisons between a plurality of compressed bitmaps , and compressed and uncompressed bitmaps , as disclosed herein , including but not limited to : a microprocessor , a microcontroller , a digital state machine , a field programmable gate array ( fgpa ), a digital signal processor , a collocated integrated memory system with microprocessor and analog or digital output device , a distributed memory system with microprocessor and analog or digital output device connected by digital or analog signal protocols . “ computer readable media ” means any source of organized information that may be processed by a computer to perform the steps described herein to result in , store , perform logical operations upon , or transmit , a word aligned hybrid compressed bitmap , including but not limited to : a magnetically readable storage system ; optically readable storage media such as punch cards or printed matter readable by direct methods or methods of optical character recognition ; other optical storage media such as a compact disc ( cd ), a digital versatile disc ( dvd ), a rewritable cd and / or dvd ; electrically readable media such as programmable read only memories ( proms ), electrically erasable programmable read only memories ( eeproms ), field programmable gate arrays ( fgpas ), flash random access memory ( flash ram ); and remotely transmitted information by electromagnetic or optical methods including , but not limited to , wireless transmission , copper wires , and optical fibers . “ literal / fill bit , or lfb ” means one or more bits representing either of a literal or a fill state . “ msb ” means the most significant bit of a computer word of a specific computer system . “ word aligned hybrid , or wah ” means a compressed bitmap as described herein . “ word length ” means the most frequently operated upon number of bits in a computer word of a specific computer system . in the wah compression method described herein , the basic storage unit is a computer word . most present computational technology generally has word sizes that contain 32 bits . word lengths are quickly moving to 64 and 128 - bits . to simplify the description of the compression method herein , the 16 and 32 - bit words are used in examples as indicated . however , the basic method can be easily applied to different size words , even down to 8 bit word lengths . in the description immediately below , a 32 - bit word is used as an illustrative example . given an ordered sequence of bits ( a bitmap ), we first conceptually group ( or parse ) the bits into 31 - bit groups . each 31 - bit group may contain all zeros , all ones , or a mixture of zeros and ones . if the 31 - bit group contains a mixture of zeros and ones , it is stored literally ( i . e . as - is ) in a word , and a literal / fill bit ( here the most significant bit , or msb of the word ) in the word is set to zero to indicate it is a literal word . adjacent groups of zeros are combined with neighboring groups that are the also all zeros , with a fill bit of value 0 , into a single compressed bitmap word entry represented as a count of the words . an analogous procedure is done for adjacent 31 - bit groups that are all ones , with the fill bit of value 1 . each combined group is called a fill . two parameters are needed to describe each fill , the bit value and the length of the fill . one word of word length is used to store each such fill . the literal / fill bit ( again in this example the msb ) of the word is set to one ( to distinguish it from a literal word ), the second most significant bit is set to the bit value of the fill , and remaining 30 bits are used to store the number of the 31 - bit groups . for fill lengths greater than fit into 30 bits , a maximum fill length word is stored , and the process continues . when the last remaining grouping of 30 or fewer bits is reached , the remaining group is stored as a literal value . this final literal value is known as the active word . another word containing the number of bits used in the active word allows for full decompression of the compressed bitmap . if the last remaining grouping of bits is exactly 31 bits , the word may be stored alternatively either : 1 ) as an appended literal value , with the active word bit length set to zero , or 2 ) as the active word , and the active word bit length set to 30 . depending on the hardware platform used for bitmap compression and / or comparison , this wah compression method may work best with the literal / fill bit being the msb of the compressed data word , and the fill value bit being located at the bit position adjacent to the msb ; however , these bit positions may be anywhere in the compressed word . the wah compression method works well for bitmaps with long sequences of zeros and / or long sequences of ones . such is the case for non - random data , which is typical of many types of data . an important concept for this compression method is the use of equal size bitmap groups regardless of their representations as literal words or fill words . thus , logical operation algorithms do not require individual bit - by - bit comparisons of two compressed bit sequences when performing logical operations . this provides an advantage in performing logical operations over the bitmaps , as the word - aligned operations on compressed bitmaps tend to be very efficient . using experimental test data sets , the wah compression scheme has been found so efficient that query processing on the compressed bitmap indexes was , on average , more efficient than query processing on the uncompressed indexes , despite the computational overhead of having to interpret the content of the compressed words . in this example and the example shown in fig1 described below , the active word , literal / fill bit , fill value , fill length , literal value , and the list of regular words are represented by their original binary values . however , with possibly somewhat reduced computation efficiency , any one or more of the representations may be binary complements of the representations used above . the bits in the active word may occupy any positions , such as from msb to the least significant bit , from least significant bit to msb , or starting from an intermediate bit position . the word used to represent the number of bits in the active word may use any format including the normal binary integers . additionally , the positional locations of the literal / fill bit , fill value , fill length , and literal value could be interchanged , or indeed split or positioned anywhere in the word so long as the data may be represented in the wah format with no information loss . refer now to fig1 . for clarity a computer word length of 16 bits has been used here to illustrate the compression of an uncompressed bitmap of 174 bits , shown here as 105 . a data structure 110 is comprised of three elements : a compressed bitmap of regular wah words 120 , an active word 130 , and an active word bit length 140 . within each word of the compressed bitmap 120 , there is a literal / fill bit ( lfb ) 121 indicating whether the individual compressed data word c 1 - c 6 holds a number of literal bit values ( here designated by a 0 bit ), or a fill ( here designated by a 1 bit ). in this example , the msb of each word of the compressed bitmap 120 is used to designate the literal / fill bit . if the literal / fill bit is set , as indicated in compressed bitmap word c 2 , there is an associated fill value 122 , indicating the bit value of the fill . in the remaining bits of the word , a fill length 123 is placed . the fill length 123 is the number of parsed groupings ( here 15 bits per parsed bitmap grouping ) having fill value 122 corresponding to the uncompressed parsed bitmap . if the literal / fill bit represents a literal word , the remaining ( word length minus one ) bits of the compressed bitmap word contain a literal representation of the next word length minus one bits of the uncompressed parsed bitmap . implementation of this method is more easily comprehended by use of an example . refer again to fig1 . an initial sample uncompressed bitmap 105 of “ 10000000000000000000000000000000000000000000000000000000000010000 110011001111111111111111111111111111111111111111111111111111100000 0000000000000000000000000000000000100000111 ” is comprised of 174 consecutive bits . this initial uncompressed bitmap is conceptually sequenced through in groups of the output compressed bitmap word length minus one . for ease of understanding , the example uses a 16 - bit compressed bitmap word length , common on older computer systems , and some microprocessors . this word length was chosen as an example for the sake of clarity , since 64 and 128 bit word lengths are extremely tedious to read in binary form . the uncompressed bitmap is shown parsed into uncompressed parsed bitmap words u 1 - u 12 having 15 bits , or the word length minus one . u 12 is a remainder of the bitmap comprising an incomplete word having only 9 bits . in this example , the active word 131 is simply a literal value having the remaining 9 bits in the leftmost position , from bits { msb . . . msb - 8 }. the unused bits 132 are indicated as x &# 39 ; s , and are not used . the active word bit length 133 , contains the number of bits used in the active word 131 ; here the value is 9 , as there are 9 bits in the active word bit length . we begin with the first uncompressed parsed bitmap word u 1 . u 1 is tested to see if all bits are 0 &# 39 ; s or all bits are 1 &# 39 ; s . if they are not , as in this case , then the corresponding compressed bitmap word c 1 is a literal . the literal is formed with a 0 in the lfb position to indicate a literal word , and the remaining bits set to the bit values of u 1 . this is further detailed in example word e 1 , which is c 1 depicting the literal / fill bit 121 location , and the literal value 124 filled with the contents of u 1 . the next uncompressed parsed bitmap word u 2 is examined . u 2 is tested to see if all bits are 0 &# 39 ; s or all bits are 1 &# 39 ; s . here , u 2 is all zeros , so we have a fill with a fill value 122 of 0 ( since u 2 is also all zero ), and a fill length of 1 . if u 2 is an isolated group of bits that are all the same state , it may be represented as a literal word to improve operational efficiency . the next uncompressed parsed bitmap word u 3 is examined . u 3 is tested to see if all bits are 0 &# 39 ; s or all bits are 1 &# 39 ; s . here , u 3 is all zeros , so we have a fill with a fill value 122 of 0 ( since u 2 is all zero ). since the previous compressed bitmap word c 2 was also a fill with a fill value of 0 , so we increment the compressed bitmap word c 2 to result in a fill length of 2 . the same process is performed with u 4 , and the compressed bitmap word c 2 is incremented to have a binary fill length of 11 b ( a 11 in binary notation ), or 3 10 ( three in decimal notation ), meaning that there are three fills of value 0 for word length minus one bits , or 3 * 15 = 45 bits of consecutive zeros . the previous three uncompressed parsed bitmap words are thus stored in the compressed bitmap word c 2 . an alternative method would be to examine u 2 - u 5 to determine that there are three groups of zeros are present . this is simply written with the literal / fill bit 121 set to a value of 1 to indicate a fill word , the fill value 122 set to a value of zero ( since u 2 - u 4 are all zeros ), and a fill length 123 of 11 b , or 3 10 . the resultant example fill word is shown in e 2 , which is identical to c 2 . at u 5 , we find another literal value , so a literal compressed bitmap word c 3 is formed , with the literal / fill bit 121 set as 0 , a literal , and the remaining 15 bits filled with the literal values of u 5 . u 6 - u 8 form a fill of three uncompressed parsed word groupings , so the literal / fill bit 121 is set to a 1 to indicate a fill , the fill value 122 is set to a 1 to indicate that the fill will be made up of 1 &# 39 ; s , and a fill length 123 of length binary 11 , or decimal 3 . this represents 3 * 15 = 45 consecutive bits having a value of 1 ( the fill value ). u 9 is compressed into a corresponding literal value c 5 as described previously . u 10 - u 11 are compressed into a fill with a fill length 123 of binary 10 , or decimal 2 , with a fill value 122 of 0 . the remaining 9 bits of the initial uncompressed bitmap do not fit evenly into a parse length of 15 bits , so they are placed into the active word 131 , and the active word bit length set to the remaining bit length , 9 bits . this example has shown an explicit uncompressed parsed bitmap . in practical application , the parsing need only be done one grouping at a time . the method can be compiled onto a variety of computers having widely variant computer word lengths . by suitable adaptation , the method can be parallelized to be run even faster on multiple cpu parallel platforms . an initial method of parallelization would be for each cpu to compress a segment of the uncompressed bitmap , and then combining the compressed segments into an overall compress bitmap of the entire uncompressed bitmap . the word - aligned hybrid bitmap compression method can readily be programmed for arbitrary bitmap logical operations . due to the simplicity of the compression data structure , bitmap logical operations have been found to generally be faster than with other compression methods . applications of bitmap index in database systems are described elsewhere , but in their simplest forms two compressed bitmaps are constructed and / or read from another data source , and then logically compared using operators including , but not limited to : “ and ”, “ or ”, “ xor ”, “ and_not ”, “ or_not ”, and others . the two compressed bitmaps are then sequentially operated upon to determine the logical result . range queries may be conducted by compound basic logical operations over compressed bitmaps , such as “ 0 & lt ;= a & lt ; 6 ” can usually be efficiently answered when the attribute a is indexed with a bitmap index . many operations on data sets , such as computing or estimating sums and averages , can also be efficiently carried out using logical operations on wah compressed bitmaps from the bitmap indices . comparing two large bitmaps is an useful operation in many applications . it may be more efficiently carried out by using bitwise logical operations on wah compressed bitmaps . in many applications , it is often necessary to extract a list of bit positions of a specific bit pattern from a bitmap . this operation can be readily performed on wah compressed bitmaps . counting of a number of instances of a particular bit pattern of one or more bits in a compressed bitmap , may be readily achieved by examining ( which is typically traversing , but may be otherwise implemented ) the wah compressed bitmap . in many cases , performing this counting on wah compressed bitmaps is more efficient than on uncompressed bitmaps or on compressed bitmaps produced with other compression methods . using the wah compression techniques , one or more wah compressed bitmap may be simultaneously constructed directly from input data ( which may be real - time , or archived ) without requiring the data records to be sorted or uncompressed bitmaps be produced . this reduces the time needed to construct an index . since bitmaps do not generally require records to be in any specific order , the records may be ordered to speed up other data manipulation operations unrelated to the wah compressed bitmaps . fig2 indicates the performance of the wah method relative to other compression methods . here , we have a logical operation between two data sets . the value “ lit ” represents the uncompressed literal data . “ bbc ” represents the byte - aligned bitmap code mentioned above . comparisons of the wah and bbc were found to be so disparate in performance , that the bbc method was reprogrammed for word alignment for a sizeable speed improvement in the data trace wbc , or word - aligned bitmap code . “ gzip ” the last data trace , represents another compression method that achieves high compression , but exceedingly poor logical comparison speed characteristics . fig2 has a vertical axis of computational time required to perform a logical operation between two sample bitmap data sets . in each of the two closely - spaced data points , logical operations were performed between random data ( typically the data point taking more time , and more space ), and stochastically related data representative of scientific data where there is significant “ lumping ” or “ clustering ” of data . it can be seen that the wah method typically exceeds performance of the bbc method by a significant amount . the horizontal axis is the compression ratio of the compressed bitmaps , where the compression ratio is defined to be the ratio of compressed bitmap size in bits , to the corresponding uncompressed bitmap . in most test cases , wah logical operations are as fast as or faster than the same operations on the literal , uncompressed data . knowledgeable computer scientists can code the word - aligned hybrid data structure , logical operation methods , and bitmap compression methods , to operate over distributed networked computer systems , or other types of networked computers and computer readable media systems . typical implementations could involve answering queries from distributed users at distributed query servers using still other remote data warehouses having wah compressed bitmaps . the compressed bitmap data structure may be transmitted over various networking systems including wireless , optical , electromagnetic . the computer programmed methods used for compression , counting , pattern position location , and bitmap operations , maybe stored on computers , and computer readable media . the compressed bitmap methods may be transmitted over any network to operate on remote data , some or all of the data required for the various bitmap operations may be read from compressed bitmaps on any remote or attached computer readable media . additionally , the result produced by the various bitmap operations may be transmitted over any distributed or non - distributed system , and written or otherwise recorded in any remote or attached computer readable media . all publications , patents , and patent applications mentioned in this application are herein incorporated by reference to the same extent as if each individual publication or patent application were each specifically and individually indicated to be incorporated by reference . the description given here , and best modes of operation of the invention , are not intended to limit the scope of the invention . many modifications , alternative constructions , and equivalents may be employed without departing from the scope and spirit of the invention .