IBM方式
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/26 15:29 UTC 版)
IBM方式は、IBM社がSystem/360で導入し、以後同社の標準としてSystem/370などのメインフレームで使った方式である(1994年4月発表のSystem/390では、従来形式のサポートは残すもののIEEE 754を使用するよう改めた)。指数部が2の冪ではなく16の冪を表すという特徴がある。この方式は、より大きな範囲を少ないビット数の指数部で表すことができ、そのぶんのビットを仮数部の桁数に使うことで精度も確保できるように一見思える。しかし、仮数部にケチ表現を使うことができず、さらに指数部の変化の前後で、仮数部のLSBが表現する値の刻み幅が16倍変化するため、2べきの場合に比べて最悪の場合には2進で3ビット分の精度が損なわれるため、一般には大成功であったと評されたSystem/360の設計において良くなかった点の一つとして挙げられる。(浮動小数点数の加減算の際に必要となる仮数部のシフトが4ビット単位となるのでシフト回数が減ることで演算が@media screen{.mw-parser-output .fix-domain{border-bottom:dashed 1px}}15%[要出典]程度高速になる利点も16進数が採用された理由であった。) 特に単精度において、前世代機のIBM 7094(全部で36ビット)よりも桁数を減らした(32ビット)ことと相まって精度が大きく損なわれた。その他にも問題があり、ユーザグループであるSHAREから改善提案が出され、その多くを受け入れて多大なコストのかかる改修をおこなったほどであり、これを記憶しているIBMの古参社員は「身の縮む思い」をおぼえているという。 また、計算対象の数値がベンフォードの法則に従って分布していた場合、計算対象として精度の低い数(仮数部の最上位4ビットが0b0001)の現れる確率は1/15にはならず、もっと高い。 IBM方式の単精度浮動小数点数では、符号部1ビット、指数部7ビット、仮数部24ビットで表現されている。各部は次のように定義されている。 符号部は、0を正、1を負とする 仮数部は、1未満の16進小数とする 指数部は、16を基数とした指数に64をバイアスした値で表す 符号部は仮数の符号を表す。指数部は−1663~−16−64と16−64~1663の範囲が表現できる。
※この「IBM方式」の解説は、「浮動小数点数」の解説の一部です。
「IBM方式」を含む「浮動小数点数」の記事については、「浮動小数点数」の概要を参照ください。
- IBM方式のページへのリンク