計算機の数値表現

計算機の数値表現

整数表現

計算機の中では整数を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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。