●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ビット(符号ビット)は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年版」を参考に作成いたしました。
コメント