IEEE754変換ツール

IEEE754変換では、10進数を16・32・64ビットのビット列に変換し、符号・指数部・仮数部、正確に保存される値、丸め誤差を表示します。16進数やビット列から逆向きに変換することもできます。

出典:Wikipedia – IEEE 754 (Formate, Bias, subnormale Zahlen, Sonderwerte)。更新日:

マイツールボックス入力内容はこのブラウザーにのみ保存されます。

結果

結果
0x3DCCCCCD · 0 01111011 10011001100110011001101
ビットの構成
部分ビット意味
符号0+
指数部 (8 bit)01111011123 − 127 = -4
仮数部 (23 bit)100110011001100110011011.10011001100110011001101
保存される値
量値
16進0x3DCCCCCD
種類正規化数
正確に保存される値0.100000001490116119384765625
入力との差+1.490e-9
ひとつ前の数0.0999999940395355224609375
ひとつ後の数0.10000000894069671630859375
最も近い表現可能な数に丸め、同じ距離なら仮数が偶数になる側を選びます。ひとつ前・ひとつ後の数は、隣り合う浮動小数点数の間隔を示します。32ビットでは、値=(−1)^s · 2^(e − バイアス) · (1 + m/2^p) です。

計算方法

浮動小数点数は、符号s、指数部e、仮数部mからなり、値=(−1)^s · 2^(e − バイアス) · 1.m です。10進数の0.1はfloatで0x3DCCCCCDとなり、実際には0.100000001490116119384765625として保存されます。

3つの形式

0.1が正確でない理由

浮動小数点数は2のべき乗で値を表しますが、0.1は2進数では循環小数になります。そのため丸められ、0.1 + 0.2 は 0.30000000000000004 になります。このツールは、保存される正確な10進値と丸め誤差を表示します。

特別な値

指数部のビットがすべて1なら、仮数部が0で無限大、0以外ならNaNです。すべて0なら、ゼロまたは非正規化数(先頭の1を持たない表現)です。

よくある質問

10進数をIEEE754に変換するには?

符号、2を底とする指数、仮数に分け、float なら8+23ビット、double なら11+52ビットで保存します。このツールが自動で行い、16進数とビット列も表示します。

0.1がfloatで正確に0.1にならないのはなぜですか?

0.1は2進数では無限に続く小数なので、丸める必要があります。floatでは0.100000001490116…、doubleでは0.1000000000000000055…になります。

floatのビットは何を表しますか?

先頭の1ビットが符号、続く8ビットがバイアス127の指数部、最後の23ビットが先頭の1を除いた仮数部です。

出典・根拠

更新日: · 編集方針

関連ツール