next up previous
Next: 8 計算実験:実習 Up: jj-kougi Previous: 6 データのサンプリングとデータ解析

7 単精度変数と倍精度変数

計算機上の数値は、2進数にて記憶されている。電気があるなし、磁気があるなし、 電気が流れる流れないなど、0と1で評価できる仕組みを用いて、数値が計算機 上に記憶されている。このような記憶の1要素を1ビット(bit)と呼ぶ。

計算機上で、

$\displaystyle \framebox{1}\framebox{0}\framebox{1}\framebox{1}$     (85)

といった情報が記憶されていると考えればよい。

これを素直に整数だと考え、10進数で表せば

$\displaystyle 1011 (2進数)$ $\displaystyle =$ $\displaystyle 1 \times 2^{3} + 0 \times 2^{2} + 1 \times 2^{1} + 1   = \
11 (10進数)$ (86)

となる。



単精度と倍精度

現在の計算機は、標準的には、2進数の8桁をひとまとめにして扱うのが 標準的である。これを計算機の分野では、 通常、 $ 1 {\rm byte} = 8 {\rm bit}$ としている。


$\displaystyle \framebox{1}\framebox{0}\framebox{1}\framebox{1}
\framebox{1}\framebox{0}\framebox{1}\framebox{1}    1バイト({\rm byte})\
= 8ビット({\rm bit})$     (87)


$\displaystyle \framebox{1}\framebox{0}\framebox{1}\framebox{1}
\framebox{1}\fra...
...box{0}\framebox{1}\framebox{1}
\framebox{1}\framebox{0}\framebox{1}\framebox{1}$      


$\displaystyle \hspace*{-12mm}    4バイト = 32ビット$     (88)

通常、この32ビットのメモリ(記憶領域)で1つの数値を表す方法を 単精度と呼んでいる。64ビット(8バイト)を倍精度と呼んでいる。



整数値の変数

与えられたビットの内1ビットを符号(正負)に用いて、その他は自然数に使う。
例.単精度整数(32ビット)
$ -2^{31} \sim 2^{31}-1 (-2,147,483,648\sim 2,147,483,647)$
の整数を表すことが可能

実数値の変数

単精度(32ビット)の場合、与えられたビットの内,符号ビット1ビット, 指数部ビット(7-8ビット),仮数部ビット(24ビット)により,


$\displaystyle (実数値)$ $\displaystyle =$ $\displaystyle (符号) (仮数部) \times 10^{指数部(整数)}$ (89)

により値を定める。



\framebox{重要ポイント}
仮数部の10進数での精度(有効桁数) 単精度:6桁倍精度:15桁



指数部の10進数での精度(有効桁数)
単精度: $ -10^{-38} \sim 10^{38}$ 倍精度: $ -10^{-306} \sim 10^{306}$

科学技術計算では、$ 10^{6}$ 回以上の繰り返し計算を行うことは 珍しくないので計算誤差により、6桁程度の誤差をしばしば発生させる。 そこで、通常、実数の計算では、倍精度が使われる。 必要な場合は、四倍精度(128ビット)を用いた計算も使われる。

倍精度の使い方は、実習などで習う。


next up previous
Next: 8 計算実験:実習 Up: jj-kougi Previous: 6 データのサンプリングとデータ解析
Copyright (C), Tatsuki Oda (oda@cphys.s.kanazawa-u.ac.jp, Kanazawa University)