去年考えた2数のうちの最大を返すint max(int a,int b)のアルゴリズム。通常
if(a>b)return a;else return b;
なところを、無理矢理分岐を抜いて
return (b+a+abs(b-a))/2
うむ。絶対コレ遅いな。関数使い出すのも反則気味(何が?)っぽいしな。あー、でも符号付き整数なら符号ビットをマスクしてやって、ついでに除算もビットシフトで、
return (b+a+abs(b-a))>>1
としてやれば早く……すいません。ビット演算子使ってみたかっただけです。ありふれた考えだって事は同じだし。でも今度時間のある時試してみよう。