?? 從判斷兩個數的奇偶 xing 看代碼和算法優化.txt
字號:
從判斷兩個數的奇偶 xing 看代碼和算法優化[原創]
下午有個想法,編個代碼來測試2個整數的奇偶 xing 是否相同。本來想寫成下面的樣子:
int judge(int m,int n)
{
if((m+n)%2==1)
return 1; //如果2個參數具有不同的奇偶 xing ,一個為奇數一個為偶數則返回1
else
return 0;//如果2個參數具有相同的奇偶 xing 則返回0
}
后來想了一下return語句的特點,就改成了下面的樣子:
int judge(int m,int n)
{
if((m+n)%2==1)
return 1;
return 0;
}
再后來考慮到m+n可能會導致數據溢出,又改成了下面的樣子:
int judge(int m,int n)
{
if(((m%2==1)&&(n%2==0))||((m%2==0)&&(n%2==1)))
return 1;
return 0;
}
再考慮到我們只是為了判斷2個參數的奇偶 xing ,與具體的值無關,所以,我們可以改變參數值,只要保證其奇偶 xing不變就可以了。因此,我又把代碼修改成這樣:
int judge(int m,int n)
{
int temp=(m&1)+(n&1);//僅保留最低位,以便測試奇偶 xing
return temp%2;
}
應該還有更簡單的方法,我想起來以后就補充。也歡迎朋友們不吝賜教。
補充一個,是從電腦愛好者論壇happymoon那里得到的思路(他的原話是“最低位異或”,我做了簡單修改),在此感謝。代碼如下:
int judge(int m,int n)
{
return (m^n)%2;
}
暈了,奇偶xing的xing被屏蔽了,只好用拼音
BugEyes 發表于 2005-7-8 20:59:00
閱讀全文(101) | 回復(1) | 引用通告(0) | 編輯
--------------------------------------------------------------------------------
上一篇:文件恢復原理
下一篇:每個人都有自己的精彩
回復:從判斷兩個數的奇偶性看代碼和算法優化[原創]
return ((m&1)+(n&1))%2;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -