gpt4 book ai didi

python - 截断二进制数的最佳方法

转载 作者:行者123 更新时间:2023-12-01 00:26:50 25 4
gpt4 key购买 nike

预期结果是将任意大小的n 数的最后k 位设置为零。例如,如果我想将 0b10011101 截断 3,结果将为 0b10011000

我想到了一些可能的解决方案,例如使用移位和其他二元运算符,甚至字符串操作。其中两个如下:

def truncate_bin_shift(n, k):
return n >> k << k
def truncate_bin_and(n, k):
return n & ((1<<n.bit_length()-k)-1 << k)

我最喜欢的是向前和向后移动,因为它非常干净,但我想知道是否有任何其他替代方案对于较大的 n 值来说可以显着提高效率。

问题是这些是否可以被认为是一种有效且合适的(读Pythonic)方式来实现它。

如果没有,什么是更好的方法,为什么?

最佳答案

您还可以这样做:

def truncate_bin_shift(n, k):
return n & -1 << k

我个人更喜欢它,因为它只使用每个参数一次,并使用 & 来屏蔽位,这更多的是通常执行截断(重置位)的方式。

关于python - 截断二进制数的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58514430/

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