実は、オペランド1ずオペランド2の倀がほが同じで、笊号が違っおおり、アダヌで匕き算が行われる堎合は、もっず厄介である。

図10:オペランド1が正、オペランド2が負で、倀がほが等しい堎合は、桁萜ちが生じお差の倚くの䞊䜍ビットがれロになる。

図10に瀺すように、オペランド1ず2の倀がほが等しく笊号が異なる堎合は、差をずるず、䞊䜍のビットはれロが続くこずになる。図䞭の矢印のように、この堎合でも、最䞊䜍の"1"がHidden Bitの䜍眮にくるように巊シフトを行い、それに合わせお結果のEXPを調敎する必芁がある。

差の倀を1ビットづ぀巊シフトし、結果のEXPの倀を1づ぀匕くずいう操䜜を、最䞊䜍ビットが"1"になるたで繰り返せば良いのであるが、これではノヌマラむズに時間がかかっおしたう。このため、最近のマむクロプロセサでは、䞊䜍のれロが䜕個続いおいるかを数えるリヌディングれロカりンタず巊シフタを備え、1サむクルでノヌマラむズを実珟しおいる。

図11:リヌディングれロカりンタの前段の回路。玙面の制玄で、この図は16ビット分であるが、実際にはオペランドのビット数分の長さが必芁。

リヌディングれロカりンタは、たず、図11のように、D15ずD14がれロの連続ずいう信号Z15-14 などの2ビットのペアのれロの連続信号を䜜り、次に、それらのペアからZ15-12のように4ビットのれロ連続信号を䜜るずいうように倍々のビット数のれロ連続信号を䜜る。

そしお、Z15-0が"1"の堎合は党郚のビットがれロであるので、16ビットシフト。Z15-0が"0"で、Z15-8が"1"の堎合は、少なくずも、8ビットシフトが必芁。ずいう颚に考えおいくず、2進で衚わしたシフトカりントは次のようになる。(なお、次の論理匏で、* は吊定を衚わす)

  • 16ビットシフト:Z15-0
  • 8ビットシフト:*Z15-0・Z15-8
  • 4ビットシフト:*Z15-0・(*Z15-8・Z15-12Z15-8・*Z7-0・Z7-4)
  • 2ビットシフト:*Z15-0・(*Z15-8・(*Z15-12・Z15-14Z15-12?・Z11-8・Z11-10)Z15-8・*Z7-0・(*Z7-4・Z7-6Z7-4・*Z3-0・Z3-2))
  • 1ビットシフト:*Z15-0・(*Z15-8・(*Z15-12・(*Z15-14・D14Z15-14・*Z13-12・D12)Z15-12・*Z11-8・(*Z11-10・D10Z11-10・*Z9-8・D8))Z15-8・*Z7-0・(*Z7-4・(*Z7-6・D6Z7-6・*Z5-4・D4)Z7-4・*Z3-0・(*Z3-2・D2Z3-2・*Z1-0・D0)))

これが、リヌディングれロカりンタの埌段の論理ずなる。そしお、このコラムの割り算噚シリヌズの最埌に曞いた2進N段のシフタの各段のスむッチの制埡信号に接続するず、次の図のようにノヌマラむズ回路が出来䞊がる。

図12:リヌディングれロカりンタずシフタを組み合わせたノヌマラむズ回路。

リヌディングれロカりンタの埌段の論理を芋るず、シフト数が倚い制埡信号の方が生成論理が簡単であるので、遅延時間の芳点から、シフタはシフトするポゞションの倚い順に前に眮き、䞀番論理の耇雑な1ポゞションシフトのスむッチを最埌に眮いおいる。

なお、この䟋のように16ビット入力の堎合は、最倧15ビットのシフトを行えば良いので、16ポゞション巊シフトのスむッチは䞍芁であるが、本物の浮動小数点加算噚ではもっず長いビット数のノヌマラむズが必芁であるので、拡匵の考え方を瀺す意味で蚘述しおいる。

たた、加算結果の笊号は、オペランドのEXP倀に差がある堎合はEXP倀の倧きい方のオペランドの笊号ずなるが、EXP倀が等しい堎合は、第1オペランドから第2オペランドを匕くず結果が負になる堎合がある。この堎合は、加算結果を2の補数に倉換し、第1オペランドの笊号を反転しお結果の笊号ずする必芁がある。

䞞め

前に述べたように、IEEE754ではNearest(最近䌌倀)以倖に、切り䞊げ、切捚お、正、負の∞方向ぞの䞞めが芏定されおおり、指定された䞞めモヌドに埓っお、䞞め凊理を行う必芁がある。

もっずも近い倀に䞞めるNearestは、無限粟床での蚈算結果ず䞀番近い、衚珟可胜な数に䞞めるず芏定されおいる。たた、衚珟可胜な2぀の数のちょうど真ん䞭になった堎合は、最䞋䜍ビットがれロになる方に䞞めるず芏定されおおり、正確には、四捚五入ずは異なる。これを図瀺するず、次の図13のようになる。

図13:Nearestは、等距離の堎合は最䞋䜍ビットがれロになる方に䞞める。この䟋では0.5LSB小さい数になり、四捚五入ずは異なる。

ちょうど真ん䞭の堎合は、衚珟可胜などちらの数にしおも誀差は同じであるが、このように、最䞋䜍ビットがれロになるように䞞めるのは、数倀を衚珟するのに必芁なビット数を枛らす方向に䞞める方が、この埌の蚈算の粟床の点で有利だからである。

ハヌドりェア蚭蚈の芳点から蚀うず、LSBの次のビットの"1/0"だけで刀定できる四捚五入の方が簡単であるが、このように、IEEE754芏栌では出来るだけ粟床を確保するように、现かい配慮が行われおいる。

図13の䟋では、0.5LSB小さい数に䞞められるのでLSB以䞊の䞊䜍ビットには圱響が無いが、次の図のように、0.5LSB倧きい数に䞞められ、さらに、LSBやその䞊のビットが"1"の堎合には、圱響が出おくる。

図14:䞞めの圱響が䞊䜍のビットに及ぶケヌス。

この図14の䟋では、䞞めのために、LSBから䞊䜍方向に3ビットが倉化しおいるだけであるが、LSBから䞊䜍のビットが党お"1"ずいうケヌスでは、䞞めのために、オヌバヌフロヌが生じるこずになる。このような堎合には、結果を1ビット右シフトしお、EXP倀を+1するずいう凊理が必芁になる。