bin()的意外结果

时间:2019-04-01 22:43:40

标签: python python-3.x function

为什么我得到这个结果。请描述问题。

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

2 个答案:

答案 0 :(得分:0)

我假设您的a = 45b = 45。 在二进制系统中,bin(45)等于'0b101101'。如果从此字符串中删除前两个字母(使用[2:])并将其强制转换为int,则将获得整数值(int('101101') == 101101)。

答案 1 :(得分:0)

这是预期的结果。将~应用于整数时,you are performing bitwise negation。用二进制补码表示,~x == -x - 1。因此,~101101 = -101101 - 1 = -101102