值< =最大值

时间:2012-04-29 15:28:36

标签: python bit operations

我想知道,是否可以使用位操作实现类似的操作:

if a > maximum: a = maximum

“最大值”可以是随机数吗?

在我当前的代码中有许多类似的行。当然可以使用:

def foo(a, max=512): return a if a<max else max

只是好奇是否有更优雅和有效的方式。

2 个答案:

答案 0 :(得分:8)

无需为此定义自己的功能,minmax已经内置:

a = min(maximum, a)

根据Raymond's answer,也可以使用位操作:

a = maximum ^ ((a ^ maximum) & -(a < maximum))

但在绝大多数情况下,性能优势并不值得使代码很难理解。此外,这仅适用于整数,而min函数可用于所有类似的类型。

答案 1 :(得分:2)

使用 max min 可以获得清晰的代码。

话虽如此,可以使用bit-twiddling:http://graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax