二进制的浪漫

0. 基本性质

0.1 交换律

相同运算符下可任意交换,不同的运算符不可交换

0.2 结合律

相同运算符是可结合的

0.3 分配律

( a & b ) ∣ c = ( a ∣ c ) & ( b ∣ c ) (a \& b) | c = (a | c) \& (b | c) (a&b)c=(ac)&(bc)
( a ∣ b ) & c = ( a & c ) ∣ ( b & c ) (a | b) \& c = (a \& c) | (b \& c) (ab)&c=(a&c)(b&c)
( a   ^   b ) & c = ( a & c )   ^   ( b & c ) (a \ \hat{} \ b) \& c = (a \& c) \ \hat{} \ (b \& c) (a ^ b)&c=(a&c) ^ (b&c)
其余三式不满足

1. and or 的不等式性质

a ⩾ a & b a ⩽ a ∣ b a \geqslant a \& b \\ a \leqslant a | b aa&baab
Formally:
a 1 & a 2 & . . . & a k ⩾ a 1 & a 2 & . . . & a n     ( k ⩽ n ) a 1 ∣ a 2 ∣ . . . ∣ a k ⩽ a 1 ∣ a 2 ∣ . . . ∣ a n     ( k ⩽ n ) a_1 \&a_2\&...\&a_k \geqslant a_1 \&a_2\&...\&a_n \ \ \ (k\leqslant n) \\a_1 |a_2|...|a_k \leqslant a_1 |a_2|...|a_n \ \ \ (k\leqslant n) a1&a2&...&aka1&a2&...&an   (kn)a1a2...aka1a2...an   (kn)


2. Xor 的不等式性质

我们知道异或就是模拟加法, 它与加法唯一不同就是不进位 So:
a x o r b ⩽ a + b a xor b \leqslant a + b axorba+b


3. 大写字母转小写字母

c |= 32;

大小写字母相差32位,正好是2的整次幂,只有最高位是1其余全是0。
其二进制表示为 10 0000
上式会将c中的第6位变为1,而所有大写字母二进制表示在第6位都是0, 所以上式相当于 c += 32


4. 小写字母转大写字母

c ^= 32

这和上一个同理,这里就不再赘述,留给聪明的读者思考吧。



5.

x ⨁ y = z x \bigoplus y = z xy=z is equivalent to x ⨁ z = y x \bigoplus z = y xz=y
because:

1 ⨁ 1 = 0 , 1 ⨁ 0 = 1 1 \bigoplus 1 = 0,1 \bigoplus 0 = 1 11=0,10=1
0 ⨁ 1 = 1 , 0 ⨁ 1 = 1 0 \bigoplus 1 = 1,0 \bigoplus 1 = 1 01=1,01=1
0 ⨁ 0 = 0 , 0 ⨁ 0 = 0 0 \bigoplus 0 = 0,0 \bigoplus 0= 0 00=0,00=0


6. 判断是否2的整次幂

if(!(n & n - 1))


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值