1 原因
學了這麼久的計算機,慚愧啊,一直沒有仔細的研究過位運算。記得當時學數字邏輯的時候貌似确實還研究過一點位運算,最近很多此刷題的時候,都會遇到那些使用位運算的騷操作,就決定好好的仔細研究一下。
2 基本文法
不進位加法和異或運算是一緻的。
就是這個符号^
我以前一度看不懂這個符号,哈哈哈哈,其實就是異或,異或就是相異為1,相同為0.
3 基本文法
移位運算符。
4 一道例題
今天在刷題的時候遇到一道題,要計算a+b。但是要求使用位運算方法來做。一度思考了很久,最後在一個大佬的講解之下才得到答案。
/*
位運算計算a+b.
2020.6.14 21:59
*/
#include <iostream>
using namespace std;
int main() {
int a=0;
int b=0;
cin >> a;
cin >> b;
while (b != 0) {
int a1 = a;
a = a1 ^ b; //相當于不進位加法。是以要處理進位
b = (a1 & b) << 1; //這一步處理進位。
}
//當b等于0的時候,即表示進位為0,是以結束循環了。輸出結果。
cout << a;
return 0;
}