求x,y的平均值
方法一:
int avg = (x + y) >> 1;
这种方式只是比除以二快了一点点,但没什么用
方法二:
int avg = x + ((y-x) >> 1);
这种方式可以防止相加的时候结果超出整型变量的范围(仅在x<y时有用)
方法三:
int avg = (x&y) + ((x^y) >> 1);
妙哉妙哉,这种方式高效且可以有效防止溢出!原理自行思考,十分精妙。
int avg = (x + y) >> 1;
这种方式只是比除以二快了一点点,但没什么用
int avg = x + ((y-x) >> 1);
这种方式可以防止相加的时候结果超出整型变量的范围(仅在x<y时有用)
int avg = (x&y) + ((x^y) >> 1);
妙哉妙哉,这种方式高效且可以有效防止溢出!原理自行思考,十分精妙。