为什么我得到这个结果。请描述问题。
Python 3.7 PyCharm 2018.3.5
def byte_operation(a, b):
a = int(bin(a)[2:])
b = int(bin(b)[2:])
print(~a)
print(~b)
return
我运行byte_operation(45, 45)
并获得:
-101102
-101102
答案 0 :(得分:0)
我假设您的a = 45
和b = 45
。
在二进制系统中,bin(45)
等于'0b101101'
。如果从此字符串中删除前两个字母(使用[2:]
)并将其强制转换为int,则将获得整数值(int('101101') == 101101
)。
答案 1 :(得分:0)
这是预期的结果。将~
应用于整数时,you are performing bitwise negation。用二进制补码表示,~x == -x - 1
。因此,~101101 = -101101 - 1 = -101102
。