//
几个用于 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 );
}