Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

固定小数点数

デジタル ハードウェアでは、数値はバイナリ ワードで格納されます。バイナリ ワードとは固定長の連続 2 進数 (1 と 0) です。ハードウェア コンポーネントやソフトウェアの関数が 1 と 0 の数列を解釈する方法については、データ型の項で説明します。固定小数点データ型と MATLAB® の組み込み整数型には、明確な相違がいくつかあります。最も明確な相違点は、組み込み整数型は 0 または正の整数のみを表すのに対して、固定小数点データ型は 2 進小数点の位置、つまり数値のスケーリング情報を含めることができます。

2 進数は固定小数点または浮動小数点データ型として表します。固定小数点のデータ型はビット単位のワード サイズ、2 進小数点、および符号付きか符号なしかによって特徴付けられます。2 進小数点の位置によって、固定小数点の値がスケーリングされて解釈されます。Fixed-Point Designer™ では、固定小数点データ型は、整数、小数、一般化固定小数点数のいずれかです。これらのデータ型間の主な違いは、既定の 2 進小数点です。たとえば、以下は一般化固定小数点数 (符号付きまたは符号なし) を 2 進数で表したものです。

ここで、

  • bii 番目の 2 進数です。

  • wl はビット単位の語長です。

  • bwl-1 は最上位 (最大) ビット (MSB) の位置です。

  • b0 は最下位 (最小) ビット (LSB) の位置です。

  • 2 進小数点は LSB の 4 桁左に示されています。したがって、この例の数値は 4 小数ビットまたは小数部の長さが 4 になります。

2 進小数点の解釈

2 進小数点によって、固定小数点数がスケーリングされます。2 進小数点を決定するのは通常、ソフトウェアです。加算や減算などの基本的な数学関数を実行する場合、ハードウェアではスケール係数の値にはかかわらず、同じ論理回路が使用されます。つまり、論理回路はスケール係数を認識しません。論理回路では、2 進小数点が b0 の右側にあるかのように、符号付きまたは符号なしの固定小数点 2 進演算を実行します。

Fixed-Point Designer は一般的な 2 進小数点スケーリング V=Q*2^E をサポートしています。V は実際の値、Q は格納された整数値、E-FractionLength に等しい値です。つまり、RealWorldValue = StoredInteger * 2 ^ -FractionLength です。

FractionLength は格納された整数値のスケーリングを定義します。語長は格納された整数が取ることができる値を制限しますが、FractionLength が取ることができる値は制限しません。ソフトウェアでは、格納された整数 Q の語長に基づいて指数 E の値が制限されることはありません。E-FractionLength に等しいため、2 進小数点を小数部と連続するように制限する必要はありません。小数部の長さは負の値または語長より大きい値にできます。

たとえば、符号なしの 3 ビットで構成されるワードは、通常は次のいずれかの科学表記法で表現されます。

bbb.=bbb.×20bb.b=bbb.×21b.bb=bbb.×22.bbb=bbb.×23

指数が 0 より大きいか、-3 未満の場合は、多くのゼロを使用して表現されます。

bbb00000.=bbb.×25bbb00.=bbb.×22.00bbb=bbb.×25.00000bbb=bbb.×28

これらの余分なゼロが 1 に変化することはありませんが、ハードウェアには表示されません。また、浮動小数点の指数とは異なり、固定小数点の指数はハードウェアには表示されないので、固定小数点の指数は有限のビット数には制限されません。

語長が 8、小数部の長さが 10、格納された整数値が 5 (バイナリ値 00000101) の符号付きの値について考えます。実際の値は式
RealWorldValue = StoredInteger * 2 ^ -FractionLength を使用して計算されます。この場合は、RealWorldValue = 5 * 2 ^ -10 = 0.0048828125 となります。小数部の長さが語長より 2 ビット長いため、格納された整数のバイナリ値は x.xx00000101 となります。ここで、x は暗黙的ゼロのプレースホルダーです。0.0000000101 (2 進数) は 0.0048828125 (10 進数) と同等です。fi オブジェクトを使用する例は、語長より大きい小数部の長さ (Fixed-Point Designer)を参照してください。

符号付き固定小数点数

通常、コンピューター ハードウェアは、符号/大きさ表現、1 の補数、2 の補数など、3 つの異なる方法で 2 進固定小数点数の否定を表します。2 の補数は符号付き固定小数点数で推奨される表現で、Fixed-Point Designer で使用される唯一の表現です。

符号付き 2 の補数を使用した否定は、ビット反転 (1 の補数に変換) に 1 の追加で構成されます。たとえば、000101 の 2 の補数は 111011 です。

固定小数点値が符号付きか符号なしかにかかわらず、バイナリ ワード内では明確にエンコードされません。つまり、符号ビットはありません。代わりに、コンピューター アーキテクチャ内で符号情報が暗黙的に定義されます。

関連するトピック