python位运算符_Python的位运算总结

一、理论知识bit(位):数据存储的最小单元。在计算机二进制系统中,位,简记为b,也称为比特(bit),每个二进制数字0或1就是一个位(bit),其中每 8bit = 1 byte(字节).

2. 位运算定义:计算机内所有的数都以二进制存储,位运算即为对二进制位的直接操作。

3. 二进制三种表示形式

①原码:对数字的二进制定点表示方法(有一位为符号位)在位运算中,符号位也参与运算

二进制的最高位是符号位:0表示正数,1表示负数

8bit:

00 00 00 11 -> 3

10 00 00 11 -> -3 [可以看出有一位为符号位]

②反码:正数的反码就是原码

负数的反码:原码符号位不变,其他位取反(0 ->1 ; 1->0 )

原码:10 00 00 11 -> -3

反码:11 11 11 00

③补码:在计算机运算的时候,都是以补码的方式来运算的

正数的补码就是源码

负数的补码:它的反码+1

0的反码、补码都是0

原码:10 00 00 11 -> -3

补码:11 11 11 01

二、Python中的位运算符按位非操作~

~1 = 0

~0 = 1

00 00 01 01 -> 5

~

---

11 11 10 10 -> -6按位与操作&

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 = 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按位异或操作 ^

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按位左移操作 <<:num << i将num的二进制表示向左移动i位所得的值

00 00 10 11 -> 11

11 << 3

---

01 01 10 00 -> 88按位右移操作 >>:num >> i将num的二进制表示向右移动i位所得的值

00 00 10 11 -> 11

11 >> 2

---

00 00 00 10 -> 2

三、利用位运算符实现快速计算通过<<,>>快速计算2的倍数问题。

示例:

n << 1 -> 计算 n*2

n >> 1 -> 计算 n/2,负奇数的运算不可用通过^快速交换两个整数。

a ^= b

b ^= a

a ^= b通过a & (-a)快速获取a的最后为 1 位置的整数。

00 00 01 01 -> 5

&

11 11 10 11 -> -5

---

00 00 00 01 -> 1

00 00 11 10 -> 14

&

11 11 00 10 -> -14

---

00 00 00 10 -> 2

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值