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; }
posted on 2009-03-17 23:47 wpcockroach 阅读(282) 评论(0) 收藏 举报
博客园 © 2004-2025 浙公网安备 33010602011771号 浙ICP备2021040463号-3