插件窝 干货文章 Python字符串二进制数如何进行位运算?

Python字符串二进制数如何进行位运算?

binary 二进制 result 字符串 339    来源:    2025-03-13

在Python中,字符串本身并不直接支持位运算。如果你想对二进制数进行位运算,首先需要将字符串形式的二进制数转换为整数,然后进行位运算,最后可以将结果转换回二进制字符串。

以下是一个示例,展示如何对二进制字符串进行位运算:

# 定义两个二进制字符串
binary_str1 = "1010"  # 10 in decimal
binary_str2 = "1100"  # 12 in decimal

# 将二进制字符串转换为整数
num1 = int(binary_str1, 2)
num2 = int(binary_str2, 2)

# 进行位运算
# 按位与 (AND)
result_and = num1 & num2
# 按位或 (OR)
result_or = num1 | num2
# 按位异或 (XOR)
result_xor = num1 ^ num2
# 按位取反 (NOT)
result_not1 = ~num1
result_not2 = ~num2
# 左移 (Left Shift)
result_left_shift = num1 << 1
# 右移 (Right Shift)
result_right_shift = num1 >> 1

# 将结果转换回二进制字符串
binary_and = bin(result_and)
binary_or = bin(result_or)
binary_xor = bin(result_xor)
binary_not1 = bin(result_not1)
binary_not2 = bin(result_not2)
binary_left_shift = bin(result_left_shift)
binary_right_shift = bin(result_right_shift)

# 输出结果
print(f"Binary AND: {binary_and}")
print(f"Binary OR: {binary_or}")
print(f"Binary XOR: {binary_xor}")
print(f"Binary NOT for num1: {binary_not1}")
print(f"Binary NOT for num2: {binary_not2}")
print(f"Binary Left Shift for num1: {binary_left_shift}")
print(f"Binary Right Shift for num1: {binary_right_shift}")

解释:

  1. int(binary_str, 2): 将二进制字符串转换为整数。2 表示基数为2(二进制)。
  2. 位运算:
    • &: 按位与
    • |: 按位或
    • ^: 按位异或
    • ~: 按位取反
    • <<: 左移
    • >>: 右移
  3. bin(result): 将整数结果转换回二进制字符串。

输出示例:

Binary AND: 0b1000
Binary OR: 0b1110
Binary XOR: 0b110
Binary NOT for num1: -0b1011
Binary NOT for num2: -0b1101
Binary Left Shift for num1: 0b10100
Binary Right Shift for num1: 0b101

注意事项:

  • 按位取反(~)操作会得到一个负数,因为Python中的整数是有符号的,取反操作会翻转所有位,包括符号位。
  • 如果你只关心二进制表示,可以使用 bin(result & 0xFFFFFFFF) 来限制结果在32位范围内。

通过这些步骤,你可以在Python中对二进制字符串进行位运算。