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)

Raymond's answerに従って、ビット操作を使用することもできます。

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 に答える