1

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

if a > maximum: a = maximum

哪里“最大”可以是一个随机数?

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

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

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

4

2 回答 2

8

无需为此定义自己的函数,min并且max已经内置:

a = min(maximum, a)

根据雷蒙德的回答,也可以使用位操作:

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

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

于 2012-04-29T15:39:35.953 回答
2

使用maxmin将使代码更清晰。

话虽如此,可以使用位旋转:http: //graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax

于 2012-04-29T16:16:53.893 回答