mulとdiv(続き)
divと右算術シフトの同一視、という誤解は古くからあるらしく、Guy Steel Jr. が"Arithmetic Shifting Considered Harmful"というレポートを1976年*1に書いている。
内容はだいたい、
- DEC PDP-10やSystem/360のマニュアルをはじめとして、昔からありとあらゆる文書でdivと右算術シフトの混同が見られる
- 多くのプログラミング言語でdivがrounding-towards-zeroとなったのは、そもそもはFORTRANがそうだったからであろう
- 1の補数表現においてはdivと右算術シフトは同一の結果を返す
- divはrounding-towards-zeroではなく、rounding-towards-negative-infinityにすべきだ
という感じ。
このテの話については"Hacker's Delight" (ASIN:0201914654)という本に詳しい。
*1:僕の生まれる前だよ……。