// 几个用于 2 的 n 次方边界判断、取值的函数
// 几年前写的,放到这好找
//======================================
// 一个数减一并与原值异或
// 用于 2 的 n 次方边界判断及取值
unsigned long _dec_xor(unsigned long val)
{
return(val ^ (val - 1));
}
//======================================
// 判断一个数是否是 2 的整次幂
bool _is_2en(unsigned long val)
{
return((val != 0) && (val <= _dec_xor(val)));
}
//======================================
// 取一个数的 2 的 n 次方边界
unsigned long _2en_bournd(unsigned long offset)
{
return((_dec_xor(offset) >> 1) + 1);
}
// 几年前写的,放到这好找
//======================================
// 一个数减一并与原值异或
// 用于 2 的 n 次方边界判断及取值
unsigned long _dec_xor(unsigned long val)
{
return(val ^ (val - 1));
}
//======================================
// 判断一个数是否是 2 的整次幂
bool _is_2en(unsigned long val)
{
return((val != 0) && (val <= _dec_xor(val)));
}
//======================================
// 取一个数的 2 的 n 次方边界
unsigned long _2en_bournd(unsigned long offset)
{
return((_dec_xor(offset) >> 1) + 1);
}