>>13
俺も昔それを思いついたことがある。たしかグレイスケールの計算だった。

G = (int)(r*0.30 + g*0.59 + b*0.11);

これだと浮動小数点計算が入ってもっさりしているので

G = (r*30 + g*59 + b*11) / 100;

このように整数演算に最適化。これでも自分的には除算が許せなかったので

G = (r*77 + g*151 + b*28) / 256;

と変形して除算を右シフトに置き換えてやった。
数年後、VCでこれとほぼ同様の最適化が自動的に施されるのを知って感心した。