zoukankan      html  css  js  c++  java
  • C语言编程 求两个数的平均值方法(三种方法)

    第一种方法是最常见的
    average=(a + b) / 2这种方式,求两个数的平均值

    第二种方法是
    当 a<b 时
    averag=a+(b-a)/2

    这里着重介绍的是第三种方法

    average=(a&b) + (a^b)>>1

    推导过程如下
    a + b = (a&b) 2 + (a^b)) ———》average=((a&b)2+(a^b))/2 ————》average=(a&b) + (a^b)>>1

    eg:
    两个数为15和5
    15二进制序列低位为1111
    5二进制序列低位为0101
    按位与(&)运算后得到两者相同的部分0101
    按位异或(^)运算后得到两者不同的部分1010
    因为相同的部分两者都有,所以要乘以二,再加上不同的部分(至此为15+5)再除以2就是平均值(10)。
    0101为5,乘以2为10,加上1010(10)为20,再除以2就是平均值10.

    源代码实例:

    #include<stdio.h>
    #include<stdlib.h>
    int average(int a, int b)
    {
        return (a&b) + ((a^b) >> 1);
    }
    int main()
    {
        int num1, num2;
        int result;
        printf("请输入两个数
    ");
        scanf("%d%d", &num1, &num2);
        result = average(num1, num2);
        printf("平均值是%d
    ", result);
        system("pause");
        return 0;
    }
  • 相关阅读:
    什么是缓存?
    什么是反射?
    Nginx配置文件详解
    数据库插入,修改出现中文乱码解决办法
    hadoop的HA机制+zookeeper
    cascading--wordcount
    心情3
    完成用户登录注册功能
    感慨1
    Swing程序设计-初级
  • 原文地址:https://www.cnblogs.com/Kaniso-Vok/p/13756254.html
Copyright © 2011-2022 走看看