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