public int hammingDistance(BitVector v) {
        int res = 0;
        int i = 0;
        for(; i<Math.min(v.data.length, v.length); i++) {
            res += Long.bitCount(data[i] ^ v.data[i]);
        }
        for(int j = i; j < data.length; j++) {
            res += Long.bitCount(data[j]);
        }
        for(int j = i; j < v.data.length; j++) {
            res += Long.bitCount(v.data[j]);
        }
        return res;
    }