BitMap C++ 实现
class BitMap
{
public:
BitMap(size_t num)
{
_v.resize((num >> 5) + 1);
}
void Set(size_t num)
{
size_t index = num >> 5;
size_t pos = num % 32;
_v[index] |= (1 << pos);
}
void ReSet(size_t num)
{
size_t index = num >> 5;
size_t pos = num % 32;
_v[index] &= ~(1 << pos);
}
bool HasExisted(size_t num)
{
size_t index = num >> 5;
size_t pos = num % 32;
bool flag = false;
if (_v[index] & (1 << pos))
flag = true;
return flag;
}
private:
vector<size_t> _v;
};
位运算实现加法
int add(int a, int b) {
if (b == 0) return a;
int sum = a ^ b;
int carry = (a & b) << 1;
return add(sum, carry);
}
不使用临时变量实现int数据互换
void swap(int& a, int& b) {
a = a + b;
b = a - b;
a = a - b;
}
void swapAdv(int&a, int& b) {
a = a ^ b;
b = a ^ b;
a = a ^ b;
}