只用一次+ 求三个整数之和
生活随笔
收集整理的這篇文章主要介紹了
只用一次+ 求三个整数之和
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://www.1point3acres.com/bbs/thread-37291-1-1.html
int sum(int a, int b, int c) {
? ? int two = (a | b | c) & ~(a ^ b ^c);//(a|b|c)表示這三個數只要有一個位上為1,則為1;a^b^c 只保留了奇數個1的位,取反,就是有偶數個1的位,比如0個1或者2個1;最后的式子只保留兩個1的位
? ? int three = a & b & c;//保留三個1的位
? ? int one = (a|b|c) ^ two ^ three;//只剩下 只有1個1的位
? ? return (one | three) + ((two | three) <<1);//
}
如何只用位運算實現兩數相加
int sum(int a, int b) {
if (b == 0)
return a;
return sum((a^b, (a&b)<<1));
}
總結
以上是生活随笔為你收集整理的只用一次+ 求三个整数之和的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新词发现想法
- 下一篇: Find consecutive ele