📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

16行目: 16行目:
== IEEE 754形式 ==
== IEEE 754形式 ==
==== 例: IEEE754形式 (単精度浮動小数点数) への変換 ====
==== 例: IEEE754形式 (単精度浮動小数点数) への変換 ====
IEEE 754 単精度浮動小数点数は、コンピュータで浮動小数点数を表現するための標準規格である。<br>
これにより、異なるコンピュータやプログラム間で一貫した数値演算が可能になる。<br>
<br>
単精度浮動小数点数は、32ビット (4バイト) で表現される。<br>
その内訳を以下に示す。<br>
* 符号部 : 1ビット
*: 符号部は、数値の正負を表す。
*: 0 = 正の数
*: 1 = 負の数
* 指数部 : 8ビット
*: 指数部は、数値を2の何乗するかを示す。
*: 指数部はバイアス (基準となる値) として127を用いたバイアス形式で表現される。
*: 実際の指数Eは、ストアされる指数値eからバイアスを減算することにより求められる。
*: <math>E = e - 127</math>
* 仮数部 : 23ビット
*: 仮数部は、数値の有効桁 (精度) を表す。
*: 仮数部は、通常、1.XXXX...の形で表現され、仮数部にはこの小数部分が格納される。 (先頭の1は省略される)
<br>
===== 例: 9.875<sub>(10)</sub> =====
===== 例: 9.875<sub>(10)</sub> =====
以下の例では、<math>9.875_{(10)}</math> をIEEE754形式の浮動小数点に変換している。<br>
以下の例では、<math>9.875_{(10)}</math> をIEEE754形式の浮動小数点に変換している。<br>
76行目: 94行目:
# 変換完了
# 変換完了
#: これにより、<math>0.3125_{(10)}</math> をIEEE754形式の32ビットの浮動小数点数にした値は <math>00111110110100000000000000000000_{(2)}</math> となる。
#: これにより、<math>0.3125_{(10)}</math> をIEEE754形式の32ビットの浮動小数点数にした値は <math>00111110110100000000000000000000_{(2)}</math> となる。
<br>
==== 例: IEEE754形式 (倍精度浮動小数点数) への変換 ====
IEEE 754 倍精度浮動小数点数 (double-precision floating-point number) は、コンピュータで浮動小数点数を表現するための標準規格である。<br>
これにより、異なるコンピュータやプログラム間で一貫した数値演算が可能になる。<br>
<br>
倍精度浮動小数点数は、64ビット (8バイト) で表現される。<br>
その内訳を以下に示す。<br>
* 符号部 (Sign bit) : 1ビット
*: 符号部は、数値の正負を表す。
*: 0 = 正の数
*: 1 = 負の数
* 指数部 (Exponent) : 11ビット
*: 指数部は、数値を2の何乗するかを示す。
*: 指数部はバイアス (基準となる値) として1023を用いたバイアス形式で表現される。
*: 実際の指数Eは、ストアされる指数値eからバイアスを減算することにより求められる。
*: <math>E = e - 1023</math>
* 仮数部 (Mantissa or Significand) : 52ビット
*: 仮数部は、数値の有効桁 (精度) を表す。
*: 仮数部は、通常、1.XXXX...の形で表現され、仮数部にはこの小数部分が格納される。 (先頭の1は省略される)
<br>
IEEE 754 倍精度浮動小数点数は以下の形式で表される。<br>
<math>(-1)^{S} \times 1.M \times 2^{E}</math><br>
* S : 符号部
* M : 仮数部
* E : 指数部
<br>
===== 例 : 倍精度浮動小数点数 =====
例えば、以下に示すような倍精度浮動小数点数があるとする。<br>
0100000000110100000000000000000000000000000000000000000000000000
<br>
この倍精度浮動小数点数を、符号部、指数部、仮数部に分解する。<br>
* 符号部
*: 0 (正の数)
* 指数部
*: 10000000011<sub>(2)</sub> = 1027<sub>(10)</sub>
*: 実際の指数 <math>E = 1027 - 1023 = 4</math>
* 仮数部
*: 0100000000000000000000000000000000000000000000000000<sub>(2)</sub>は、10進数で1.25<sub>(10)</sub>
<br>
したがって、この数値は以下に示すように解釈される。<br>
<math>(+1) \times 1.25 \times 2^{4} = 1.25 \times 16 = 20.0</math><br>
<br>
==== 特殊な値 ====
* ゼロ
*: 符号部が0または1で、指数部と仮数部が全て0の場合
* 無限大
*: 符号部が0または1で、指数部が全て1、仮数部が全て0の場合
* NaN (Not a Number)
*: 指数部が全て1で、仮数部が0以外の場合
<br><br>
<br><br>