【Python 语法】二进制

  • 基本语法
    • 1. `bin(n)` 二进制表示
    • 2. 二进制运算符,按位操作
    • 3. 二进制位数相关方法
    • 4. `format()` 输出为不同进制
    • 5. 检查二进制中某一位是否为 1

Python 提供了许多方便的工具来 处理二进制相关的操作,尤其是对于整数的二进制表示和二进制运算。

基本语法

1. bin(n) 二进制表示

通过 bin() 函数 将整数转换为二进制字符串

n = 50
bin_n = bin(n)
print(bin_n)  # 输出 '0b110010','0b' 表示这是二进制
  • bin(n) 返回一个以 '0b' 开头的二进制字符串。
  • bin() 返回的字符串从左到右,'0b' 后面的部分才是二进制位。

可以 通过切片去掉 '0b' 前缀

bin_n = bin(n)[2:]
print(bin_n)  # 输出 '110010'

2. 二进制运算符,按位操作

  • 按位与 (&):将两个整数的 二进制位 进行 “与” 运算。
  • 按位或 (|):将两个整数的 二进制位 进行 “或” 运算。
  • 按位异或 (^):将两个整数的 二进制位 进行 “异或” 运算。
  • 按位非 (~):对整数的 二进制位取反
  • 按位左移 (<<):将一个整数的二进制位 向左移动指定的位数,相当于 乘以 2 的幂
  • 按位右移 (>>):将一个整数的二进制位 向右移动指定的位数,相当于 整除 2 的幂
  a = 5   # 二进制 101
  b = 3   # 二进制 011
  print(a & b)  # 输出 1,二进制相与 001
  print(a | b)  # 输出 7,二进制 111
  print(a ^ b)  # 输出 6,二进制 110
  print(~a)  # 输出 -6,二进制取反
  print(a << 1)  # 输出 10,二进制 1010
  print(a >> 1)  # 输出 2,二进制 10

3. 二进制位数相关方法

  • bin():将整数转换为 二进制字符串,如前所述。
  • bit_length():返回整数的 二进制表示中所需的位数(不包括符号位)。
    n = 50
    print(n.bit_length())  # 输出 6,表示 50 的二进制表示需要 6 位
    
  • int()将二进制字符串转换为整数,可以通过指定 base=2 来实现。
    bin_str = '110010'
    n = int(bin_str, 2)
    print(n)  # 输出 50
    

4. format() 输出为不同进制

format() 函数在 Python 中用于 格式化字符串,包括将整数转换为 二进制、八进制、十进制和十六进制等进制 的表示。

n = 50

# 二进制
binary = format(n, 'b')
print(f'Binary: {binary}')  # 输出 '110010'

# 八进制
octal = format(n, 'o')
print(f'Octal: {octal}')  # 输出 '62'

# 十进制
decimal = format(n, 'd')
print(f'Decimal: {decimal}')  # 输出 '50'

# 十六进制
hexadecimal = format(n, 'x')
print(f'Hexadecimal: {hexadecimal}')  # 输出 '32'

# 带前缀格式化
binary_with_prefix = format(n, '#b')
print(f'Binary with prefix: {binary_with_prefix}')  # 输出 '0b110010'

octal_with_prefix = format(n, '#o')
print(f'Octal with prefix: {octal_with_prefix}')  # 输出 '0o62'

hexadecimal_with_prefix = format(n, '#x')
print(f'Hexadecimal with prefix: {hexadecimal_with_prefix}')  # 输出 '0x32'

5. 检查二进制中某一位是否为 1

可以通过 右移按位与 运算来检查某一特定位置的二进制位是否为 1

n = 50  # 二进制:110010
position = 3
if (n >> position) & 1:
    print(f'第 {position} 位为 1')
else:
    print(f'第 {position} 位为 0')

你可能感兴趣的:(python)