基本情報技術者2011:1.1.2「数値表現」

スポンサーリンク
スポンサーリンク

●10進数の表現

ゾーン10進数

文字データとの親和性がよい。「アンパック10進数」とも呼ばれる。
10進数の1桁8ビットであらわし、最後の1桁の上位4ビットに符号情報を格納します。
各バイトの数字ビットには、対応する数値が2進数で格納されています。

・10進数1桁を8ビットで表す。
・1桁をあらわす8ビットには「ゾーンビット(4ビット)」と「数字ビット(4ビット)」が含まれる。
・最後の桁は「符号ビット(4ビット)」と「数字ビット(4ビット)」で表す。
・正負を考えない場合は、符号ビットにはゾーンビットと同じものが入る。

ゾーンビット = 「1111」または「0011」。データが数値であることを示している。
数字ビット = 無論10進数の値を2進数に変換したものになる。
符号ビット = 「1100」か「1101」で表し1100」が「1101」が「を表す。
         正負を考えない場合は、符号ビットにはゾーンビットと同じものが入る。

10進数「+267」をゾーン10進数であらわすと・・・
(ゾーンビット+数字ビット) (ゾーンビット+数字ビット) (符号ビット+数字ビット)
(00110010) (00110110) (11000111)
001100100011011011000111 と表現される。

パック10進数

計算速度が速い。10進数の1桁を4ビットで表し、最後に符号ビットを追加し表す。
バイト(8ビット)で割り切れない場合は、不足分を「0」で埋める。

・10進数の1桁を4ビットで表す。
・最後に符号ビットを追加する。
・合計がバイト単位でない場合は、先頭に4ビット分の「0」を追加する。

・10進数の桁数が 偶数の場合先頭に「0000」を追加する

10進数「267」をパック10進数であらわすと・・・
(数字ビット) (数字ビット) (数字ビット) (符号ビット(+))
(0010) (0110) (0111) (1100)
0010011001111100 と表現される。

10進数「2011」をパック10進数であらわすと・・・
(数字ビット) (数字ビット) (数字ビット) (数字ビット) (符号ビット(-))
(0010) (0000) (0001) (0001) (1101)
—- バイトで割り切れないので4ビット分の「0」を追加 —-
(0000) (0010) (0000) (0001) (0001) (1101)
000000100000000100011101 と表現される。

●2進数の表現

固定小数点表示

整数データで配列の添字などに使用される。2進整数を、固定長2進数で表現します。
負数は、2の補数で表現しますので、負数の先頭の1ビット(符号ビット)はになります。

10進数の「***」を固定小数点表示するには
・「***」の2進数を求めてから
・「***」の2進数の「1の補数」を求め(ビットを反転させて)
・「***」の2進数の「1の補数」に「1」足し2の補数とする

(-20)10 =
2)20 あまり:0
2)10 あまり:0
2) 5 あまり:1
2) 2 あまり:0
2) 1 あまり:1
= (10100)2 ⇒ バイト単位に揃える ⇒ (00010100)2 となる。
= (00010100)2 ⇒ 1の補数(各ビット反転) ⇒ (11101011)2
= (11101011)2 ⇒ 2の補数へ(「1」を足す) ⇒ 11101011 + 1 = (11101100)2

「-20」は(11101100)2とあらわせる。

固定長 = ビット長はコンピュータによってことなる
補数  = 与えられた数を、既定の数から引くことによって得られる数。既定の数とは、
      基数のべき乗か、基数のべき乗から1を引いた数である。X進数には「Xの補数」、
      「X-1の補数」ある。(例:10進数⇒10の補数、9の補数)

10進数3桁の「234」の補数は以下のとおり。
○10の補数    ○9の補数
10^3 = 1000    10^3-1 = 999
-)      234    -)       234
        766             765

2進数3桁の「010」の補数は以下の通り。
○2の補数      ○1の補数
2^3 = (1000)2    2^3-1 = (111)2
-)      010      -)       010
        110               101

浮動(ふどう)小数点表示

実数を固定長の2進数により指数形式で表現するため、科学技術計算で扱う数値のような非常に大きい(または小さい)値を表現することが出来る。ただし、四捨五入や切捨てなどが行なわれるので、誤差が生じることがある

指数形式(IEEE754)
1ビット  8ビット 23ビット
仮数部符号 指数部 . 仮数部
00000000000000000000000000000000

仮数符号部は、「0」を正、「1」を負とする
仮数部は、整数部分が 1 であるような2進小数の小数部分を表す

実数は以下の式で表すことが出来る。

実数 = ± 仮数部 × 基数^指数部

32ビットの浮動小数点表示を用いて、(0.375)10を表す場合。

(0.375)10
0.375 × 2 = 0.75
0.75 × 2 = 1.5
0.5 × 2 = 1.0
= (0.011)2

(0.011)2
= 0.011 × 2^0
= 0.11 × 2^-1

ここまでで
・値は「」である
・仮数部は「0.11」である
・指数部は「-1」である
ことが分る。

現在はこんな感じ
0XXXXXXXX11000000000000000000000000000000

XXXXXXXX は指数部の「-1」 を2進数で記述する。

(1)10 = (0001)2
#1の補正 (1110)2 #ビットを反転
(-1)10 = (1111)2 #1の補正+1

答えは、
00000111111000000000000000000000000000000

情報処理教科書 基本情報技術者2011年版」を参考に作成いたしました。

コメント

タイトルとURLをコピーしました