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;
}