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:僕の生まれる前だよ……。