仮数

仮数（かすう）とは、浮動小数点数の一部で、有効数字を構成する部分である。英語では 、、 などと呼ぶ（後述）。指数の表現によって、整数で表される場合もあるし、小数で表される場合もある。

例 
123.456 78 という数について、仮数部を整数で表すと、仮数は12345678、指数は −5 となる。したがってその値は次の式で表される（指数表記）。

 12 345 678 × 10−5

同じ値を正規化表現することもできる。この場合、仮数を 1.2345678 という小数で表し、指数を +2 とする。

 1.234 5678 × 10+2

同じ値を規格で指定されたフォーマットで表現することもできる。Ada、C言語、FORTRAN、Modula-2 などがこの規格に従っている。JIS X 0210-1986（情報交換用文字列による数値表現）では、この形を「正規形」と呼称している。

 0.123 456 78 × 10+3

なお、第9回 CGPM（1948，決議7）及び第22回 CGPM（2003，決議10）により、小数部を3桁ごとにスペースで区切るのが通例である。

仮数と hidden bit 
二進法で浮動小数点数を表す場合、仮数は二進数で表され、その桁数（つまりビット幅）が特徴となる。常に正規化されるため、仮数の最上位ビットは常に1となるので、一般にはそのビットを格納せず "hidden bit" や「けち表現」などと呼ぶ。仮数のビット幅を数える際、この hidden bit を加える場合と加えない場合がある。例えば、IEEE 754 の倍精度形式は、hidden bit を含めるか否かによって仮数のビット幅を53ビットと言ったり、52ビットと言ったりする。hidden bit があるのは二進表現の場合のみである。IEEE 754 は精度 p を仮数の桁数と定義しており、その際に暗黙の前置されるビットも含むとしている（例えば、倍精度形式の精度 p は 53 である）。

ちなみに、x87の内部表現に用いられる80ビット拡張倍精度浮動小数点数の仮数部は、他の形式と異なりケチ表現ではない。

英語での呼称 
 は有効数字を意味する "significant digits" に由来し、20世紀に生まれた言葉である。 は通常「係数」と訳されるが、指数部に付属する係数という意味で仮数も意味する。

アメリカ英語では、もともと仮数を mantissa と呼んでいた (Burks et al.)。計算機科学者の間では今（2005年）でもよく使われている。しかし、IEEE 754 の浮動小数点規格を策定した委員会は、mantissa のこのような用法を好ましくないとしており、ウィリアム・カハンやドナルド・クヌースといった専門家も同意見である。というのも、mantissa はもともと対数の小数点以下の部分を指す用語として使われているためである。

mantissa の本来の意味である対数の小数点以下の部分は、（底が同じ）浮動小数点数の仮数の対数に（正規化に依存する）ある定数を加えたものに等しい。一方、浮動小数点数の指数部は対数の整数部分に対応する。

mantissa が対数の小数点以下を指す用法は18世紀まで遡り、さらに古くは "minor addition"（小さな付加）を意味する言葉だった。

引用

参考文献 
 Burks, Arthur W.; Goldstine, Herman H.; Von Neumann, John (1946). Preliminary discussion of the logical design of an electronic computing instrument. Technical Report, Institute for Advanced Study, Princeton, NJ. In Von Neumann, Collected Works, Vol. 5, A. H. Taub, ed., MacMillan, New York, 1963, p. 42:
5.3. 'Several of the digital computers being built or planned in this country and England are to contain a so-called "floating decimal point". This is a mechanism for expressing each word as a characteristic and a mantissa—e.g. 123.45 would be carried in the machine as (0.12345,03), where the 3 is the exponent of 10 associated with the number.'

コンピュータの算術