固定小数点形式の加減算

logic

固定小数点形式の数の足し算(加算)や引き算(減算)をする方法は、整数の足し算や引き算の方法と基本的に同じです。ただし、固定小数点形式の数は、小数点のビット位置に注意する必要があります。

図1の2つの固定小数点形式のAとBは、どちらも16ビットですが整数部と仮数部のビット数が異なります。Aは整数部が12ビットで小数点以下の仮数部が4ビット、Bは整数部が4ビットで小数点以下の仮数部が12ビットです。

小数点位置が異なる固定小数点形式の数
図2: 小数点位置が異なる固定小数点形式の数

加算

固定小数点形式の数の加算は、図2のようにAとBの小数点位置を合わせて整数部が12ビット、仮数部が12ビットの合わせて24ビットとして計算を行う必要があります。桁合わせをした結果、AとBに不足するビット部分は0で埋めます。

小数点位置を合わせる
図2: 小数点位置を合わせる

AとBに具体的な値を入れて計算した結果が図3です。Aが10進数で2345.75(\(929.C_{16}\))、Bが10進数で13.2421875(\(D.3E0_{16}\))のとき、桁合わせをしてAとBを足すと2358.9921875(\(936.FE0_{16}\))という正しい結果を得ることができます。

固定小数点形式の加算
図3: 固定小数点形式の加算

減算

固定小数点形式の数の減算は、小数点位置を合わせてから引く方の数を2の補数に変換して足し算として計算します。固定小数点形式の数の2の補数の求め方は整数の場合と同じです。元の数の全ビットを反転してから1を足すと2の補数になります。

AとBに具体的な値を入れて計算した結果が図4です。Aが10進数で2345.75(\(929.C_{16}\))、Bが10進数で13.2421875(\(D.3E0_{16}\))のとき、AからBを引きます。桁合わせをしてから求めたBの2の補数は\(FF2.C20_{16}\)です。AとBの2の補数を足すと、2332.5078125(\(91C.820_{16}\))という正しい結果を得ることができます。

固定小数点形式の減算
図4: 固定小数点形式の減算

固定小数点形式の値の減算で、既に引く方の数が2の補数形式になっている場合は、小数点位置の桁合わせに注意が必要です。桁合わせで不足する2の補数の上位側のビットは、1で埋める必要があります。また、桁合わせで不足する2の補数の下位側のビットは、0で埋める必要があります。

タイトルとURLをコピーしました