计算两个数的平均数的几种方法解读
来源:互联网 发布:linux开机启动shell 编辑:程序博客网 时间:2024/06/05 10:01
求平均值的方法有很多,假设有两个整型数,在下边用a,b解释
1.大家都能想起来的方法是直接求平均值
int average(int a, int b){return (a + b) / 2;}
但是存在溢出的现象,我们就要考虑使用其他方法来避免这种现象的发生
2.
int average(int a, int b){return a + (b - a) / 2;}
这种方法看起来是不是会好一些点呢?其实还可以用位运算来求平均值
3.将2中的方法改进一下
int average(int a, int b){return a + ((b - a) >> 1);}
右移一位就相当于除二解释一下:
5的二进制可以写为: 00000101
右移一位的二进制为:00000010 //2
这样就可以求出一个数的平均值了
4.从3中可以得到启示,我们首先要清楚与(&)和异或(^)是怎么运算的
按位与:
0&0=0 0&1=0
1&0=0 1&1=1
异或:
0^0=0 0^1=1
1^0=1 1^1=0
现在我们就用位运算来实现求平均值
int average(int a, int b){return (a&b) + ((a^b) >> 1);}
分析:a&b 相同位按位与还是本身,不同位按位与是0
(a^b)>>1 不同的二进制位加起来除以二
举个例子:
a=5,b=4
a 000101 //5
b 000100 //4
a&b 000100 //4
a^b 000001 //1
求得:(a&b)+((a^b)>>1)=4+1/2=4
阅读全文
0 0
- 计算两个数的平均数的几种方法解读
- 求两个数的平均数
- 求平均数的几种方法
- 使用多种方法求两个数的平均数
- perl 计算平均数的方法
- 31.计算数组平均数,并输出平均数和小于平均数且最接近平均数的数
- 计算组合数的几种方法
- 平均数的计算
- 自动计算数值个数不固定的数的平均数
- 只用逻辑运算和移位运算求两个数的平均数
- 用位运算求两个数的平均数
- 5-1-1 初试数组-计算平均数并输出所有大于平均数的数-关于平均数的double-安全隐患
- 求平均数的方法以及数的移位
- python的算数平均数计算
- 求三个数的平均数
- 求输入数的平均数
- 求几个数的平均数
- 计算两个数的最大公约数
- xx项目总结
- 2760: [JLOI2011]小A的烦恼
- httpClient访问webservice服务--带http头参数
- AlibabaJava开发手册阅读
- PhpStorm2016.2 缩进设置
- 计算两个数的平均数的几种方法解读
- canny边缘检测
- struts2单例多例问题以及spring整合的问题
- RMQ 求区间最值
- 视频播放
- Visible Trees 【容斥】
- 摄像头
- java charset
- 写入视频