gpt4 book ai didi

python - 如何创建 Python 固定长度位?

转载 作者:太空宇宙 更新时间:2023-11-04 01:17:46 25 4
gpt4 key购买 nike

我想在 Python 中进行按位求反。

我的期望:

negate(0001) => 1110

但是 Python 的 ~0b0001 返回 -0b10。 Python 似乎将 1110 截断为 -0b10。

如何保留前导位?

另外,为什么

bin(~0b1) yields -0b10?

为该数据类型保留了多少位?

最佳答案

Python 使用任意精度算法,因此您不必担心使用的位数。它还为 bin(~0b1) 返回 -0b10,因为它知道结果是 -2 并且代表数字 10 并保留前面的符号(仅适用于负数)。

但是我们可以使用 format 函数来表示我们喜欢的数字,就像这样

def negate(number, bits = 32):
return format(~number & 2 ** bits - 1, "0{}b".format(bits))

print(negate(1))
# 11111111111111111111111111111110
print(negate(1, bits = 4))
# 1110

或者,作为 suggested by eryksun ,

def negate(number, bits = 32):
return "{:0{}b}".format(~number & 2 ** bits - 1, bits)

关于python - 如何创建 Python 固定长度位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23285653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com