天天看點

位運算 C++

1 原因

學了這麼久的計算機,慚愧啊,一直沒有仔細的研究過位運算。記得當時學數字邏輯的時候貌似确實還研究過一點位運算,最近很多此刷題的時候,都會遇到那些使用位運算的騷操作,就決定好好的仔細研究一下。

2 基本文法

不進位加法和異或運算是一緻的。

就是這個符号^

我以前一度看不懂這個符号,哈哈哈哈,其實就是異或,異或就是相異為1,相同為0.

3 基本文法

移位運算符。

位運算 C++

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

繼續閱讀