位基本运算(一)

1. 基本运算

首先明确: 基本位运算规则, 不依赖正负.
定义: 对于a, b两个位向量: [aw-1, aw-2, …, a0] 和 [bw-1, bw-2, …, b0], 将a&b定义为一个长度为w的位向量, 其中第i个元素等于ai&bi, 0 ≤ i 0\leq i 0i &lt; w &lt;w <w. 类似 |, ^, ~ 定义同理.

1.1 & 与

对应位全部为1, 对应结果位为1, 否则为0.
0110 & 1100 = 0100

1.2 | 或

对应位有1个位为1, 对应结果位为1, 否则为0.
0110 | 1100 = 1110

1.3 ^异或

对应位互异, 对应结果位为1, 否则为…
0110 ^ 1100 = 1010

1.4 ~ 非

将原来的位, 1 变为0 , 0 变为1.
~ 1100 = 0011

2. 应用场景

这里取a为两个字节为例, a为任意个位亦成立. 细细体会, 定有收货.

2.1 运算结果全部不变:

a & 0xFFFF
a | 0
a ^ 0

2.2. 运算结果全部取反:

a ^ 0xFFFF
~a

2.3. 结果部分不变, 部分取反

a ^ 0x00FF

2. 4. 设置指定位为0

其他位不变, 也可称只取指定位/丢弃指定位(掩码, 如 chmod - x):
a & 0x00FF

2. 5. 设置指定位为1

其他位不变, 如chmod + x:
a | 0xFF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值