예제 #1
0
Bitvector operator ^ (Bitvector const& lhs, Bitvector const& rhs)
{
    // check for self-xor. if so, return zero vector of same size.
    if (&lhs == &rhs) {
        return Bitvector(lhs.size(), false);
    }

    // otherwise, make a copy and xor it.
    Bitvector result = Bitvector(lhs);
    result ^= rhs;
    return result;
}
예제 #2
0
Bitvector bitwise_or (Bitvector const& lhs, Bitvector const& rhs)
{
    if( lhs.size() < rhs.size() ) {
        auto result = Bitvector( rhs, lhs.size() );
        result |= lhs;
        return result;
    } else {
        auto result = Bitvector( lhs, rhs.size() );
        result |= rhs;
        return result;
    }
}
예제 #3
0
void Domain::calculateLID(vector<Bitvector> &LIDs, int index) {
    int bit_position;
    int number_of_bits = (index / (fid_len * 8)) + 1;
    Bitvector LID;
    do {
        LID = Bitvector(fid_len * 8);
        for (int i = 0; i < number_of_bits; i++) {
            /*assign a bit in a random position*/
            bit_position = rand() % (fid_len * 8);
            LID[bit_position] = true;
        }
    } while (exists(LIDs, LID));
    LIDs[index] = LID;
}