目录
3. 按位求反运算符、按位与运算符、按位异或运算符和按位或运算符
1.引入
看了好多代码,之后觉得好多优秀的开源项目在位运算上的使用简直到了“无所不用其极”的地步,高效利用位运算,不仅仅能让我们的存储变得高效,有时候也能让我们的代码执行速度变得更强,不过还是要从最基础的复习起来,
好吧,让我们开始复习位运算!
(1)移位运算符
<< 左移位运算符
>> 右移位运算符
(2)按位求反运算符、按位与运算符、按位异或运算符和按位或运算符
~ 按位取反
& 按位与
^ 按位异或
| 按位或
运算符~是一元运算符,对其操作数会进行整数提升。
其他运算符都是二元运算符,对其操作数进行常用的算术转换。
运算符~、&、^和|对操作数的每一位执行布尔运算。~运算符会产生对操作数求反的结果,即将每一个0替换成1,
将每一个1替换成0。运算符&对两个操作数相应的位执行逻辑与运算。运算符^和|相似(都是对两个操作数执行逻
辑或运算),不同的是当两个操作数的位都是1时,^产生0而|产生1。
按位异或运算:
首先按位异或表示当两个数的二进制表示,进行异或运算时,当前位的两个二进制表示不同则为1相同
则为0.该方法被广泛推广用来统计一个数的1的位数.
参与运算的两个值,如果两个相应bit位相同,则结果为0,否则为1。
即:
0^0 = 0,
1^0 = 1,
0^1 = 1,
1^1 = 0
按位异或的3个特点:
(1) 0^0=0,0^1=1 0异或任何数=任何数
(2) 1^0=1,1^1=0 1异或任何数-任何数取反
(3) 任何数异或自己=把自己置0
按位异或的几个常见用途:
(1) 使某些特定的位翻转
例如对数10100001的第2位和第3位翻转,则可以将该数与00000110进行按位异或运算。
10100001^00000110 = 10100111
(2) 实现两个值的交换,而不必使用临时变量。
例如交换两个整数a=10100001,b=00000110的值,可通过下列语句实现:
a = a^b; //a=10100111
b = b^a; //b=10100001
a = a^b; //a=00000110
2. 左移和右移运算符

3. 按位求反运算符、按位与运算符、按位异或运算符和按位或运算符
3.1 作用演示

3.2 优先级


3.3 复合赋值运算符

博客提到优秀开源项目常高效运用位运算,能提升存储效率和代码执行速度。接着开始复习位运算,介绍了左移和右移运算符,以及按位求反、与、异或、或运算符,还涉及这些运算符的作用演示、优先级和复合赋值运算符。
176万+

被折叠的 条评论
为什么被折叠?



