bool IsPowerOfTwo(int x) { return ((x & (x - 1)) == 0 ) && (x != 0); }
单纯的(x+y)/2可能存在x+y溢出的风险。
int Average(int x, int y) { return (x & y) + ((x ^ y) >> 1); }
template <typename T> T Abs(T x) { T y = x >> ((sizeof(T) << 3) - 1); return (x ^ y) - y; //or: return (x + y) ^ y; }