Python3逻辑左移位

2024-06-07 08:52:56 发布

您现在位置:Python中文网/ 问答频道 /正文

默认情况下,Python(<;<;)中的“左移位”操作充当算术移位,并在表示int的位的末尾追加0位

例如: 100<&书信电报;1返回200

在二进制表示中,我们可以看到100=0b1100100(7位)和100<&书信电报;1=0b11001000(8位)

在Python3中,执行逻辑左移位的最佳方法是什么,其中位数保持不变,但值向左移位

例如: 100<&书信电报;1将返回72

在二进制表示中,100=0b1100100和100<&书信电报;1=0b1001000 我们保留了相同的7位,但只是向左移动了一位,并在末尾附加了一个0


Tags: 方法lt二进制情况算术逻辑电报python3
1条回答
网友
1楼 · 发布于 2024-06-07 08:52:56

您可以使用^{}获取表示该数字所需的位数,然后and使用(1 << bitlength) - 1移位的结果将结果限制为这么多位:

def lls_const_bits(n):
    return (n << 1) & ((1 << n.bit_length()) - 1)

print(lls_const_bits(100))

输出:

72

如果要将输出限制为固定位数b,则需要使用(1 << b) - 1屏蔽:

def lls_const_bits(n, b):
    return (n << 1) & ((1 << b) - 1)

print(lls_const_bits(100, 7))

输出:

72

相关问题 更多 >

    热门问题