doupoa
一个不甘落后的热血青年!
Ping通途说

Python中 & | ^ 的使用

在一些网络类的脚本中有时会发现这些符号连接着两个变量。

当符号连接的两个变量全为数值时,这些符号会按位(二进制)对两个变量进行计算。


https://doupoa.site/wp-content/uploads/2021/11/1637495435-微信截图_20211121195011.png
微软计算器

小贴士:如何利用微软计算器快速将数字转换为二进制?打开微软计算器,按照相应进制选择输入即可。本文我们使用DEC模式。

binary 二进制 —- BIN
octal 八进制  —-   OCT
hexadecimal 十六进制  — HEX
decimal 十进制  — DEC


1.& – 和

按位和,两值同一位均为1时,结果为1,否则为0

print(3&1)
# 1

print(21&24)
# 0

我们将以上所有数字转换成二进制,可得以下结果:

  • 3 : 0000 0011 , 1 : 0000 0001 -> 0000 0011 & 0000 0001 = 0000 0001 -> 再转换成十进制:1
  • 21 : 0001 0101 , 24: 0001 0000 -> 0001 0101 & 0001 0000 = 0000 0000 -> 再转换成十进制:0


2. | – 或

按位或,当同位上至少有一个值为1时,结果为1,反之为0

print(3|5)
# 7 

print(7|10)
# 15

我们将以上所有数字转换成二进制,可得以下结果:

  • 3: 0000 0011 , 5: 0000 0101 -> 0000 0011 | 0000 0101 = 0000 0111 -> 再转换成十进制:7
  • 7: 0000 0111 , 10: 0000 1010 -> 0000 0111 | 0000 1010 = 0000 1111 -> 再转换成十进制:15


3.^ – 异或

按位异或,当同位值不同时为1,反之相同为0

print(3^1)
# 2

print(4^5)
# 1

我们将以上所有数字转换成二进制,可得以下结果:

  • 30000 001110000 0001 -> 0000 0011 ^ 0000 0001 = 0000 0010 -> 再转换成十进制:2
  • 第二个你来试试看!(累了..)
赞赏

doupoa

文章作者

诶嘿

发表回复

textsms
account_circle
email

  • bz

    哦哦哦懂了谢谢大佬

    2 年前 回复

Ping通途说

Python中 & | ^ 的使用
在一些网络类的脚本中有时会发现这些符号连接着两个变量。 当符号连接的两个变量全为数值时,这些符号会按位(二进制)对两个变量进行计算。 微软计算器 小贴士:如何利用…
扫描二维码继续阅读
2021-11-21

Optimized by WPJAM Basic