按位运算.

目录

利用位运算符快速计算

按位与  &

按位或 |

按位异或 ^

按位左移 <<

按位右移  >>

按位取反  ~


计算机中数字以二进制形式存储,在计算机运算的时候,是以补码形式来运算的。各个数之间的运算也是对它们的补码做运算,而且得到的结果也是补码。位运算也就是对二进制位进行操作。

利用位运算符快速计算

2的倍数
n << 1     求n * (2)
n << x     求n * (2 ** x)
n >>1      求n / (2)
n >> x     求n / (2 ** x)

快速交换
m ^= n
n ^= m
m ^= n

按位与  &

参与运算的两个值,如果两个值的对应位都是1,运算结果为1,否则为0.

1 & 1 = 1
1 & 0 = 0
0 & 1 = 0
0 & 0 = 0

00 00 01 01 -> 5
&
00 00 01 10 -> 6
---
00 00 01 00 -> 4

按位或 |

参与运算的两个值的对应位如果有1则为1,否则为0.

1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0

00 00 01 01 -> 5
|
00 00 01 10 -> 6
---
00 00 01 11 -> 7

按位异或 ^

参与运算的两值的二进制位相同为0,相异为1.

1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 1 = 1
0 ^ 0 = 0

异或:取或再取反
00 00 01 01 -> 5
^
00 00 01 10 -> 6
---
00 00 00 11 -> 3

按位左移 <<

所运算数的二进位左移n位,高位丢弃,低位补0
x << n:   将x的二进制位向左移动n位。

n * (2 ** x)

00 00 10 11 -> 11
11 << 3
---
01 01 10 00 -> 88 

按位右移  >>

所运算数的二进位右移n位。
x >> n:   将x的二进制位向右移动n位。

n / (2 ** x)

00 00 10 11 -> 11
11 >> 2
---
00 00 00 10 -> 2 

按位取反  ~

参与运算的数对应的二进制位取反,1->0 ,0->1.

00 00 10 11 -> 11
11 ~ 2
---
00 00 10 11

11 11 01 00

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值