位運算 C++

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章