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;
    }
  • 相关阅读:
    对软件工程课程的期望
    软件工程进阶
    结对-爬取大麦网近期演唱会信息-需求分析
    对软件工程课程的期望
    自我介绍
    软件工程进阶
    阅读任务-阅读提问-1
    《对软件工程课程的期望》
    《自我介绍》
    第0周课后作业
  • 原文地址:https://www.cnblogs.com/Kaniso-Vok/p/13756254.html
Copyright © 2011-2022 走看看