位运算?位运算符左移右移怎么运算
一、位运算符的运算规则
1.
按位取反(~)单目运算符,以二进制为单位,1变0,0变1。
2.
按位与(&)、按位或(|)双目运算符,以二进制为单位。1&1=11|1=10&0=00|0=01&0=01|0=10&1=00|1=1
3.
异或(^)双目运算符,以二进制为单位。运算规则:两个数相同异或为0,不同异或为1。1^1=00^0=01^0=10^1=1特性:与1异或具有翻转性(0变1,1变0)与0异或具有保与1异或具有翻转性(0变1,1变0)
与0异或具有保持性(异或后为本身)
与一个二进制数连续异或两次后恢复原值不变,具有恢复性
异或运算具有交换性(a^b=b^a)
二、位运算符怎么运算
位运算是很多算法优化的基础和实现的条件,极其重要。理解位运算对于一些算法及其优化有着非常重要的意义。
技巧及用途
与运算常常用于二进制下的取位操作。想要知道二进制下的某位是否是1,就&上这个位数对应的十进制数。假如返回的是这个十进制数本身,则这个位的确是1,反之就是0.
比如:
我们要取第三位是否为1,我们只需要与&上第三位(二进制表示为100)对应的二进制数4,如果返回值为4,就代表第三位为1,反之就是0.
最常用的是取二进制下的最末位,即a&1。这样的技巧可以用于判断奇偶,根据二进制常识,尾数为1则为奇数,反之为偶数。
三、什么是位运算什么是逻辑运算
位运算是对每一位进行notandor等运算。
在c/c++中,逻辑运算是短路的。比如a&&b,a是false后不会evalb。可以理解为ifa是false返回a,elseevalb。||这是ifa是true返回a,elseevalb。