code: func (bitmap *bitmap) Compare(other *bitmap, prefixLen int) int {
  	if prefixLen > bitmap.Size || prefixLen > other.Size {
  		panic("index out of range")
  	}
  
  	div, mod := prefixLen>>3, prefixLen&0x07
  	res := bytes.Compare(bitmap.data[:div], other.data[:div])
  	if res != 0 {
  		return res
  	}
  
  	for i := div << 3; i < (div<<3)+mod; i++ {
  		bit1, bit2 := bitmap.Bit(i), other.Bit(i)
  		if bit1 > bit2 {
  			return 1
  		} else if bit1 < bit2 {
  			return -1
  		}
  	}
  
  	return 0
  }
docs: // Compare compares the prefixLen-prefix of two bitmap.
  //   - If bitmap.data[:prefixLen] < other.data[:prefixLen], return -1.
  //   - If bitmap.data[:prefixLen] > other.data[:prefixLen], return 1.
  //   - Otherwise return 0.