求兩個數的平均值3種方法
- 方法1:(a+b)/2,但是會存在溢位現象。
- 方法2:float c = a+(b-a)/2.0,不用建立第三個變數。
- 方法2:float c = a&b+((a^b)>>1),直接操作bite位,效率更高。
主要解釋第三種方法:
a&b:相當於同一個bite位上相同的平均值,相同的平均值即為自身。
a^b:相當於同一個bite位上不相同的數之和。
>>1: 相當於除以2 ,求平均值。
float mean(int a, int b) { //float c = 0.0;方法2 //c = a + (b - a) / 2.0; //return c; return a&b + ((a^b) >> 1);方法3 } int main() { int a = 7, b = 3; printf("%d 和 %d 的平均值為 %f", a, b, mean(a, b)); system("pause"); return 0; }
相關推薦
求兩個數的平均值3種方法
方法1:(a+b)/2,但是會存在溢位現象。 方法2:float c = a+(b-a)/2.0,不用建立第三個變數。 方法2:float c = a&b+((a^b)>>1),
交換兩個數的幾種方法
code alt pre temp emp 分享圖片 splay lin ons 第一種:利用第三方變量 1 int a = 10, b = 12; 2 int temp = 0; 3 temp = a; 4 a = b; 5 b = temp; 6 Console.W
求逆元的3種方法
//擴充套件歐幾里得求逆元 //a*x=1(mod m)=>a*x+m*y=1 int extgcd(int a,int b,int &x,int &y){ int d=a; if(b!=0){ d=extgcd(b,a%
交換兩個數的四種方法
一.建立臨時變數 1.普通的方法: 思路簡介:建立一個臨時變數,通過temp=a,a=b,b=temp來實現交換。 缺點:這只是一種假交換,由於這只是在函式內部臨時變數間的交換,所以當函式退出
Java求兩個數平均值
int param 練習 深入 發現 通用 個數 範圍 相加 如何正確的求2個數的平均值。在練習算法二分查找的時候發現的,以前沒有註意到的bug 備註:數據以int類型為例 一、以前的通用寫法 1 /** 2 * 求a+b平均值 3 * @pa
求兩個數的平均值三種方法
【一】基本方法 #include<stdio.h> #pragma warning(disable:4996) int main() { int x = 7, y = 9,z=0;
C語言編程 求兩個數的平均值方法(三種方法)
輸入 均值 二進制 介紹 運算 use pause can include 第一種方法是最常見的average=(a + b) / 2這種方式,求兩個數的平均值 第二種方法是當 a<b 時averag=a+(b-a)/2 這裏著重介紹的是第三種方法 average=(
將兩個數交換的3種方法(異或法有陷阱!)
最常用的方法,程式碼如下: int a=50,b=22,t; t=a; a=b; b=t;不使用額外空間的方法:(1)加減法 (2)異或法 (1)加減法程式碼如下: int a=50,b=22,t; a=a+b; b=a-b; a=a-b; (2)異或法(是兩數交換所用時間最快的方法) 顧名思義,就是將兩個數
1.交換兩值內容 2.不創建臨時變量交換兩只內容 3.求十個數中的最大值 4.講三個數由大到小輸出 5.求兩個數最大公約數
www. 最大公約數 十個 following .com blank 臨時變量 lan follow 露x都對貝姨芽沽1才39賢http://www.facebolw.com/space/2104128 ZP鋪巢嗣3瀉HX7Dhttp://www.facebolw.com
如何不使用(a+b)/2這種方式,求兩個數的平均值?
第一種: 一個數右移一位等於一個數除以2 (a+b)>>1 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <windows.h> int main() { int a
求兩個數的平均值
由於當兩個數較大時,(a+b)/2這種方式可能會溢位,因此不採用此方法求兩個數的平均值。 程式碼: #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> //不使用(
c語言 3種方法 求出0~999之間的所有 水仙花數 並輸出
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
3種方法交換兩個整數(不建立臨時變數)+輸出一組資料最大值+簡單排序+最大公約數
交換兩個整數: 第一種: int a = 6; int b = 8; int t = 0; t = a; a = b; b = t; printf("a = %d b = %d\n", a, b); 後兩種不建立臨時變數 第二種: int a = 6; int
你所必須知道的三種基本求兩個數最大公約數的演算法
1 迭代法求最大公約數 /*迭代法求最大公約數 *原理:m n r;將r賦值給n,n賦值給m */ #include <iostream> using namespace std; int Gcd(int m, int n) { int r; r =
作業2.3:求兩個數的最大公約數,最小公倍數?
#include<stdio.h> #include<math.h> int fun_y(int,int); int fun_b(int,int); main() { int a,b,gy,gb; printf("輸入兩個整數:\n");
c語言實現不使用(a + b) / 2這種方式,求兩個數的平均值
//不使用(a + b) / 2這種方式,求兩個數的平均值 解題思路: 1> 先判斷是奇數還是偶數; 2> 將a,b之和右移一位; 3
求逆序對個數的三種方法(歸併排序,樹狀陣列,權值線段樹)
求逆序對個數的三種方法 逆序對: 對於一個序列 a1a_1a1,a2a_2a2,a3a_3a3…ana_nan,如果存在aia_iai>aja_jaj且i<j,則aia_iai和aja_jaj為一個逆序對。 這裡將介紹3種求逆序對對數
不使用(a+b)/2這種方式,求兩個數的平均值。
不使用(a+b)/2這種方式,求兩個數的平均值。 思路: 第一種:移位; (a+b)>>1 第二種 : a+((b-a)>>1) -->a+(b-a)/2 ----(a+b)/2 b+((a+b)>
hdu 1394 求迴圈串的最小逆序數 暴力法 線段樹 歸併排序3種方法
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6743
演算法:求兩個數的最大公約數與最小公倍數的方法
1、計算兩個整數的最大公約數方法有兩種 第一種是使用《九章算術》中的更相減損術方法,“以少減多,更相減損,求其等也,以等數約之,等數約之,即除也,其所以相減者皆等數之重疊,故以等數約之。”其大概意思就是“若分子、分母均為偶數時,可先被2除,否則,將分子與分母之數列在它處,然後以小數減大數,輾