7- 4. Compress, or Generalized Extract
The APL language includes an operation called compress, written B/V, where B is a Boolean vector and V is vector of the same length as B, with arbitrary elements. The result of the operation is a vector consisting of the elements of V for which the corresponding bit in B is 1. The length of the result vector is equal to the number of 1’s in B.
Here we consider a similar operation on the bits of a word. Given a mask m and a word x, the bits of x for which the corresponding mask bit is 1 are selected and moved (“compressed”) to the right. For example, if the word to be compressed is (where each letter denotes a single bit)
abcd efgh ijkl mnop qrst uvwx yzAB CDEF,
and the mask is
0000 1111 0011 0011 1010 ...