[cpp] view plain copy int avg(int x, int y) { return (x & y) + ((x ^ y) >> 1); } 解释:X+Y= (X^Y)+((X&Y)<<1); 想想加法手动怎么加的!(X&Y)<<1其实就是进位。 SO: (X+Y)/2==((X^Y)>>1)+(X&Y)