位运算

简介: 位运算 我们先来看看位运算操作符:& (按位与)、| (按位或)、^ (按位异或)、~ (按位取反)、>> (按位右移)、<< (按位左移)。  位运算符优先级比+低,注意加小括号!   1、&(按位与) 从概念上来讲,就是将参与运算的两个分量对应的每一位来做逻辑与运算,若两者都为真(等于1),则结果才为真(等于1)。否则都为假(等于0)。

位运算

我们先来看看位运算操作符:& (按位与)| (按位或)^ (按位异或)~ (按位取反)>> (按位右移)<< (按位左移)

 位运算符优先级比+低,注意加小括号!

 

1&(按位与) 从概念上来讲,就是将参与运算的两个分量对应的每一位来做逻辑与运算,若两者都为真(等于1),则结果才为真(等于1)。否则都为假(等于0)。

即:1 & 1 = 1 1&0 = 0 0&1 = 10&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 = 01|0 = 10|1 = 11|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 = 10|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变成00变成1

直接看例子:

~7 = ~0000 0111 = 1111 1000 = 248

 

>>(按位右移)把二进制位整体向右移动。

7>>1 = 0000 0111 >> 1 = 0000 0011 = 3

7>>2 = 0000 0111 >> 2 = 0000 0001 = 1

这里右移等于除了2N次方,N为右移的位数。

 

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

 

位运算比乘除法效率高,所以乘以除以2时可用位操作。尽量不要对int型负数进行按位移操作。

 

 

目录
相关文章
|
4月前
玩转位运算
玩转位运算
|
7月前
|
存储 Java
一篇搞定位运算(&、|、^、~、>>、<<、>>>)
我们最了解的就是十进制 , 除了十进制 , 还有二进制 , 六进制 , 八进制等等 , 由于位运算操作就是二进制 , 所以我们主要来说一下二进制 , 十进制的个位有(0~9)这几个数字 , 而二进制也相同 , 二进制的个位上只有0和1
33 0
|
5天前
|
计算机视觉
位运算
【5月更文挑战第8天】位运算。
9 1
|
9月前
|
算法 Java 编译器
第 13 天_位运算
第 13 天_位运算
61 0
|
9月前
位运算专题(个人理解)
位运算专题(个人理解)
44 0
|
10月前
|
算法 数据安全/隐私保护
基本的位运算
基本的位运算
|
10月前
|
存储
位运算及A+B
位运算及A+B
|
12月前
位运算(1)
位运算(1)
位运算的小技巧
快速学习位运算的小技巧