shift と /

以前、(sign)a >> n == a / (1 << n) とか妄言を吐いたことがありますが、間違ってます。過去にも同じ過ちを犯した覚えが鮮烈に甦ってきました。進歩がありませんね。

C では / は 0 に向かって切り捨てるのに対して、>> は floor です。つまり -1 / 8 = 0, -1 >> 3 = -1。そんなわけで / で >> を正確に emulate するのは overhead 無しではできないんでした。残念。