我想知道,是否可以使用位操作来实现类似的效果:
if a > maximum: a = maximum
哪里“最大”可以是一个随机数?
在我当前的代码中有许多类似的行。当然可以使用:
def foo(a, max=512): return a if a<max else max
只是好奇是否有更优雅和有效的方法。
我想知道,是否可以使用位操作来实现类似的效果:
if a > maximum: a = maximum
哪里“最大”可以是一个随机数?
在我当前的代码中有许多类似的行。当然可以使用:
def foo(a, max=512): return a if a<max else max
只是好奇是否有更优雅和有效的方法。
无需为此定义自己的函数,min
并且max
已经内置:
a = min(maximum, a)
根据雷蒙德的回答,也可以使用位操作:
a = maximum ^ ((a ^ maximum) & -(a < maximum))
但在绝大多数情况下,性能优势并不值得让代码非常难以理解。此外,这仅适用于整数,而该min
函数可用于所有可比较的类型。
使用max和min将使代码更清晰。
话虽如此,可以使用位旋转:http: //graphics.stanford.edu/~seander/bithacks.html#IntegerMinOrMax