C++基础-位运算
昨天笔试遇到一道题,让实现乘法的计算方法,设计方案并优化,后来总结位运算相关知识如下:
在计算机中,数据是以1010的二进制形式存储的,1bytes = 8 bits,bit就是位,所以位运算就是对每个1010进行操作。
位运算有&|~^<<>>,分别是与或非异或左移右移。
与:1与不变,0与为0;
或:只有0或0为0,其他情况都为1;
非:取反;
异或:相同为0,不同为1;
左移右移:向左/右移动若干位;
乘法:
左移一位,相当于x2;
除法:
右移一位,/2;
不用申请第三个变量而实现2个变量值的互相交换:
因为a^b^a==b
所以有:
a=a^b;
b=a^b;
a=a^b;