2024-05-29 10:13:31 发布
网友
为什么
>>> print(f"{-5 & 0b1111: 04b}") 1011
但是,
>>> print(f"{-5 | 0b0000: 04b}") -101
而且
>>> print(f"{-5 | 0b1111: 04b}") -001
看起来,第一个-5转换为2的恭维,然后执行操作。那么,如果是“&;”输出是这样打印/解释的,但是对于|,输出被转换回有符号的幅度表示。为什么会有这样的不对称
|
二进制中的-5(二的补码)是…111111011。Python可以处理任意精度的整数,并且没有一种很好的方法可以打印出前面的无限字符串,所以它用负号表示负二进制数。(好吧,我们可能会对此争论,但事实就是如此。)
具有正数的某些内容的按位and(如第一个示例中所示)将始终为正数,因为正数的前导零将与任何内容组合,从而在结果中创建前导零
负数与任意数的按位or(如其他示例中所示)始终为负数,因为负数的前一个将与任意数组合,以在结果中创建前一个
你看到的唯一不同是结果的迹象。负面结果总是用减号打印
二进制中的-5(二的补码)是…111111011。Python可以处理任意精度的整数,并且没有一种很好的方法可以打印出前面的无限字符串,所以它用负号表示负二进制数。(好吧,我们可能会对此争论,但事实就是如此。)
具有正数的某些内容的按位and(如第一个示例中所示)将始终为正数,因为正数的前导零将与任何内容组合,从而在结果中创建前导零
负数与任意数的按位or(如其他示例中所示)始终为负数,因为负数的前一个将与任意数组合,以在结果中创建前一个
你看到的唯一不同是结果的迹象。负面结果总是用减号打印
相关问题 更多 >
编程相关推荐