位操作

作者: 文达IOS | 来源:发表于2017-07-18 14:26 被阅读7次

位操作详解

位运算的操作符有:&、|、^、~、>>、<<,六种,分别对应与,或,异或,按位取反,右位移,左位移

1、&(按位与) 从概念上来讲,就是将参与运算的两个分量对应的每一位来做逻辑与运算,若两者都为真(等于1),则结果才为真(等于1)。否则都为假(等于0)。
即:1 & 1 = 1 、1&0 = 0 、0&1 = 0、0&0 = 0
这里我们先来看看那一个8位二进制的例子:
7&8 = 0000 0111 & 0000 1000 = 0000 0000 = 0
7&6 = 0000 0111 & 0000 0110 = 0000 0110 = 6

2、| (按位或) 即把参与运算的每个分量对应的每一位来做逻辑或运算,即两者都为假(为0)时,才为假(为0),否则皆为真。
即:0|0 = 0、1|0 = 1、0|1 = 1、1|1 = 1
来看看8位二进制的例子:
7|8 = 0000 0111 | 0000 1000 = 0000 1111 = 15
7|6 = 0000 0111 | 0000 0110 = 0000 0111 = 7

3、^(按位异或) 即把参与运算的每个分量对应的每一位来做异或运算,即两者相同为假,不同为真。
即:0|0 = 0、 1|0 = 1、0|1 = 1、 1|1 = 0
看下面的例子:
7^8 = 0000 0111 ^ 0000 1000 = 0000 0111 = 7
7^6 = 0000 0111 ^ 0000 0100 = 0000 0011 = 3

4、~(按位取反) 即把二进制位的每一位进行取反运算,简而言之就是1变成0,0变成1。
直接看例子:
~7 = ~0000 0111 = 1111 1000 = 248

5、 >>(按位右移)把二进制位整体向右移动。
7>>1 = 0000 0111 >> 1 = 0000 0011 = 3
7>>2 = 0000 0111 >> 2 = 0000 0001 = 1
这里右移等于除了2的N次方,N为右移的位数。

6、 <<(按位左移)这里就不详细说了,和右移相反。

摘抄来源:http://blog.csdn.net/lhshaoren/article/details/7256141

相关文章

  • 位操作

    位操作乘、除、求余,需要乘以或除以2的n次方,都可以用移位的方法代替1、乘a=a*4 <=> a=a<<2 2、...

  • 位操作

    位操作详解 位运算的操作符有:&、|、^、~、>>、<<,六种,分别对应与,或,异或,按位取反,右位移,左位移 1...

  • 位操作

    c++中位操作操作符 这些位操作符只能用于整形的操作,其他会编译报错。位操作符的运算优先级比较低,因为尽量使用括号...

  • 位操作

    1. 把一个数上调成另一个数的倍数 2. 取某些位 取最低位, 可由数字得到相应的二进制字符串 3. 判断str与...

  • 位操作

    1.概念: ​ In digital computer programming, a bitwise ope...

  • 位操作

  • 位操作

    打印一个变量的二进制值 获取某一位的值将1左移n-1位然后与该变量按位与,等于0就是0,不等于0就是1 取反某一位...

  • InfluxDB 1.3新特性--查询语法新特性

    支持新的数学操作符 取余 (%) 位操作 AND (&) 位操作 OR (|) 位操作 Exclusive-OR ...

  • 逻辑操作与位操作

    位操作:&、|逻辑操作: &&、|| 逻辑操作只返回true 或 false x = 0x66y = 0x39 x...

  • 位操作与移位操作

网友评论

      本文标题:位操作

      本文链接:https://www.haomeiwen.com/subject/txchkxtx.html