計算機の数値表現
整数表現
計算機の中では整数を2進数で表す。
(a)符号絶対値表現
通常の2進数を用いた表現。先頭ビットで正負を区別。
例:aa
-3 111
-2 110
-1 101
-0 100
+0 000
+1 001
+2 010
+3 011
(b)1の補数表現
通常の2進数表現の各ビットを反転したもので負数を表す。
例:
-3 100
-2 101
-1 110
-0 111
+0 000
+1 001
+2 010
+3 011
(c)2の補数表現
通常の2進数表現の各ビットを反転したものに1を加算したもので負数を表す。
例:
-4 100
-3 101
-2 110
-1 111
+0 000
+1 001
+2 010
+3 011
コンピュータの中では(c)が用いられている。理由は
1. 減算を加算で表現することができる
2. 0を1通りで表す
からである。
実数の表現
実数は浮動小数点表現と呼ばれる方法で表せる。
(仮数部)×(基数)^(指数部)
のように表現する。表現可能な範囲を上に越えることを「オーバーフロー」
したに越えることを「アンダーフロー」と呼ぶ。
仮数の最初が1になるようにすることを正規化と呼ぶ。この1を省略することで
仮数の桁を増やすことができる。これを経済的仮数表現と呼ぶ。
実数の計算における誤差
実数の計算において生じる誤差の種類と特徴を挙げる。
ほぼ等しい数同士を引き算した時に、著しく有効数字が減少する。
極端に小さな数を足したとき、それが無視されてしまう。
循環小数を途中で打ち切った時に生じる
- コンピュータは無限回の演算を行えない。したがって無限級数の計算などではこの誤差が生じる.
2の補数を使った加減算
計算結果が表現可能な範囲を越えることをオーバーフローと呼ぶ。
(a) 正数+正数の場合
+0xx
+ +0xx
0xx
(b) 正数+負数の場合
0xx
+ 1xx
1xxx
(c) 負数+負数の場合
1xx
+ 1xx
1xxx
となる。よって「最上位への桁上げと最上位からの桁上げの両方があるか
最終更新:2009年06月05日 15:23