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