我想知道,是否可以使用位操作实现类似的操作:
if a > maximum: a = maximum
“最大值”可以是随机数吗?
在我当前的代码中有许多类似的行。当然可以使用:
def foo(a, max=512): return a if a<max else max
只是好奇是否有更优雅和有效的方式。
答案 0 :(得分:8)
无需为此定义自己的功能,min
和max
已经内置:
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