Python 位运算符中的 & | ^ 运算逻辑详解
Python中的位运算符 也称二进制运算符,并且这些运算符只用于对整型数进行运算。进行位运算时,整型数被转换为二进制形式,然后位运算符对每位执行有关运算后,将结果再转换回十进制形式,并返回给用户。
以下将详解 & 、|、 ^ 这三种 运算逻辑
&(与) : 按位逻辑运算符, 从代码可见,5的二进制为 101, 6的二进制为 110,与运算逻辑为 "见假为假“ , 因此 101 & 110 的二进制结果为 100,转换为十进制就是 4
decimal_num1 = 5
decimal_num2 = 6
binary_num1 = bin(decimal_num1)[2:]
binary_num2 = bin(decimal_num2)[2:]
print(str(decimal_num1) + f'的二进制为:{binary_num1}')
print(str(decimal_num2) + f'的二进制为:{binary_num2}')
result_and = decimal_num1 & decimal_num2
print(f'按位与运算结果的十进制为:{result_and}')
result_and_binary = bin(result_and)[2:]
print(f'按位与运算结果的二进制为:{result_and_binary}')
result_and_integer = int(result_and_binary,2)
print(f'把按位与运算结果的二进制转换为十进制为:{result_and_integer}')
|(或) : 按位或逻辑运算符,从代码可见,5的二进制为 101, 6的二进制为 110,或运算逻辑为 "见真为真“ , 因此 101 & 110 的二进制结果为 111,转换为十进制就是 7
decimal_num1 = 5
decimal_num2 = 6
binary_num1 = bin(decimal_num1)[2:]
binary_num2 = bin(decimal_num2)[2:]
print(str(decimal_num1) + f'的二进制为:{binary_num1}')
print(str(decimal_num2) + f'的二进制为:{binary_num2}')
# result_and = decimal_num1 & decimal_num2
# print(f'按位与运算结果的十进制为:{result_and}')
#
# result_and_binary = bin(result_and)[2:]
# print(f'按位与运算结果的二进制为:{result_and_binary}')
#
# result_and_integer = int(result_and_binary,2)
# print(f'把按位与运算结果的二进制转换为十进制为:{result_and_integer}')
result_or = decimal_num1 | decimal_num2
print(f'按位与运算结果的十进制为:{result_or}')
result_or_binary = bin(result_or)[2:]
print(f'按位与运算结果的二进制为:{result_or_binary}')
result_or_integer = int(result_or_binary,2)
print(f'把按位与运算结果的二进制转换为十进制为:{result_or_integer}')
^(异或) : 按位异或逻辑运算符,从代码可见,5的二进制为 101, 6的二进制为 110,异或运算逻辑为 "相同为0,相异为1“ , 因此 101 & 110 的二进制结果为 011(也就是11),转换为十进制就是 3
decimal_num1 = 5
decimal_num2 = 6
binary_num1 = bin(decimal_num1)[2:]
binary_num2 = bin(decimal_num2)[2:]
print(str(decimal_num1) + f'的二进制为:{binary_num1}')
print(str(decimal_num2) + f'的二进制为:{binary_num2}')
# result_and = decimal_num1 & decimal_num2
# print(f'按位与运算结果的十进制为:{result_and}')
#
# result_and_binary = bin(result_and)[2:]
# print(f'按位与运算结果的二进制为:{result_and_binary}')
#
# result_and_integer = int(result_and_binary,2)
# print(f'把按位与运算结果的二进制转换为十进制为:{result_and_integer}')
# result_or = decimal_num1 | decimal_num2
# print(f'按位与运算结果的十进制为:{result_or}')
#
# result_or_binary = bin(result_or)[2:]
# print(f'按位与运算结果的二进制为:{result_or_binary}')
#
# result_or_integer = int(result_or_binary,2)
# print(f'把按位与运算结果的二进制转换为十进制为:{result_or_integer}')
result_dif_or = decimal_num1 ^ decimal_num2
print(f'按位与运算结果的十进制为:{result_dif_or}')
result_dif_or_binary = bin(result_dif_or)[2:]
print(f'按位与运算结果的二进制为:{result_dif_or_binary}')
result_dif_or_integer = int(result_dif_or_binary,2)
print(f'把按位与运算结果的二进制转换为十进制为:{result_dif_or_integer}')
作者:冯大少