2024-06-12 23:50:52 发布
网友
如何在Python中为负数创建1的补码和2的补码代码?你知道吗
在这个过程中,我遇到了一些反转和零(1)的问题。 我试着用res = bin(~int(bin(numb), 2)),但没用。 我需要这样的结果:
res = bin(~int(bin(numb), 2))
Input: -123 Direct code: 11111011 Ones' complement code: 10000100 Two’s complement code: 10000101
您可以这样做来计算2的补偿:
def extra(x, bits = 64): mask = (1 << bits) - 1 if x < 0: x = ((abs(x) ^ mask) + 1) return bin(x)[2:]
1的补码是这样的:
def reverse(y, bits = 64): mask = (1 << bits) - 1 if y < 0: y = (abs(y) ^ mask) return bin(y)[2:]
运算符-是二的补码,~是一的补码。两者的表示都是负数,因为python整数有无限位。正值表示无限0s,负值表示无限1s。要显示,需要将数字截断为有限的位数。你知道吗
-
~
0
1
>>> '{:08b}'.format(-123 & 0xff) '10000101' >>> '{:08b}'.format(~123 & 0xff) '10000100' >
您可以这样做来计算2的补偿:
1的补码是这样的:
运算符
-
是二的补码,~
是一的补码。两者的表示都是负数,因为python整数有无限位。正值表示无限0
s,负值表示无限1
s。要显示,需要将数字截断为有限的位数。你知道吗相关问题 更多 >
编程相关推荐