基礎理論 - 1.基礎理論 - 1.離散数学 - 2.数値の表現

Last Update : January 02 2021 16:00:14

     

a. 負の数の表現

2進数で負の数値を表現する場合は、最上位ビットを符号ビットとして扱う絶対値表現と、すべてのビットを反転させて負数を表現する補数表現がある。

絶対値表現
絶対値表現とは、最上位の 1 ビットで符号を表現する。残りのビットで数値を表現する。
正の数の場合は、最上位桁を 0 とし、負の数の場合は、最上位桁を 1 とする方法。

8 ビットの場合、3 と -3 は、
3(10) = 00000011(2)
-3(10) = 10000011(2)
になる。
これらから、8 ビットの場合、7 ビットで数値を表すので、-127~127までを表現できる。
ただし、0 を表す場合は、00000000 と 10000000 の 2 通りがある。

補数表現
コンピュータの内部での「負の数の表現」では「補数」を使用します。
補数」とは、「ある基準となる値からいくつ不足しているか」を表現したものです。
補数には、2種類あり、「n進数」の補数の場合、「nの補数」(完全補数)と「n-1の補数」(不完全補数)があります。
例えば、10進数の場合は、「10の補数」と(10-1)=「9の補数」があります。2進数の場合、2の補数と1の補数がある。
コンピュータの場合、1度に計算できるビット数は決まっているので、そのビット数をオーバーした場合は、オーバー分は無視される。それを応用したのが補数表現になる。

補数は、正の数が、3(10) = 00000011(2) の場合、2 の補数は、-3(10) = 11111101(2) にすること。

1 の補数
1 の補数を表現するには、2 進数のすべてのビットを反転する。

-3(10)を 1 の補数で表す場合、(8 ビットの場合)
まず正の数の 3(10) を 2 進数に直す。
3(10) = 00000011(2)
次にそのビットを反転させる。0 は 1 に、1 は 0 にする。
00000011(2) = 11111100(2) ・・・ 1 の補数

2 の補数
2 の補数を表現するには、2 進数のすべてのビットを反転して 1 を加算する。
2 の補数を使うことで、コンピュータは引き算を足し算として計算することができる。 コンピュータの内部では、負の数を 2 の補数で扱っていることが多い。

-3(10)を 2 の補数で表す場合、(8 ビットの場合)
まず正の数の 3(10) を 2 進数に直す。
3(10) = 00000011(2)
次にそのビットを反転させる。0 は 1 に、1 は 0 にする。
00000011(2) = 11111100(2) ・・・ 1 の補数
この 1 の補数に 1 を足す。
11111100(2) + 1 = 11111101(2) ・・・ 2 の補数

イクセス表現
nビットで数を表すとき、2(n-1) を0として、それより上の数を正の数、下の数を負の数とする表示方法。
たとえば8ビットの場合、00000000が-128、10000000が0、11111111が127になる。簡単に表現すると、表したい数に 27 つまり 128 を足したものがイクセス表現になる。(浮動小数点数の指数部の場合、27-1(127))

8ビットで2進数の表現

10進数絶対値表現1の補数2の補数イクセス表現浮動小数点数の
イクセス表現
128----11111111
1270111111101111111011111111111111111111110
1260111111001111110011111101111111011111101
::::::
20000001000000010000000101000001010000001
10000000100000001000000011000000110000000
000000000
10000000
00000000
11111111
000000001000000001111111
-11000000111111110111111110111111101111110
-21000001011111101111111100111111001111101
::::::
-1261111111010000001100000100000001000000001
-1271111111110000000100000010000000100000000
-128--1000000000000000-


b. 小数の表現

小数の表現方法として、固定小数点数と浮動小数点数がある。


c. 固定小数点数

数値を表現するときに、整数部と小数部のそれぞれの桁数が決まっている表現方法
小数点の位置が変わらない表現方法


d. 単精度浮動小数点数,倍精度浮動小数点数,仮数,指数

浮動小数点
小数点の位置を一定とせず、数値の正負を示す符号部、有効数字を表示する仮数部、小数点の位置を指定する指数部を用いて表す。

実数 a = ± M × rE

で表す。

IEEEの浮動小数点数

1ビット 8ビット(11ビット) 23ビット(52ビット)
符号部(S) 指数部(E) 仮数部(M)
S : 仮数部の符号 (1 ビット) 0 = 正、1 = 負
E : 指数部 (8 ビット)、基数は 2 。バイアス値 127(11ビットは1023)
M : 1.xxx の形式に正規化する。
(- 1)S × (2E-127) × (1.M)
1.M は、正規化して 1 の位が 1 で、残りの小数部分が M であることを示す。
カッコの数字は倍精度のビット数

例.
11010.1101は、+ 1.10101101 × 24 で表せる。これを浮動小数点数に直すと
0 10000011 10101101000000000000000

浮動小数点数の正規化
仮数部の左側の 0 をなくすようにする操作を正規化という。
たとえば、仮数部が 8 ビットの場合、
0.0011001011 を
単純に仮数部にセットすると、

0 0 1 1 0 0 1 0 1 1

8ビットしか入らないので右端の 1 1 が切り捨てられる。
しかし、正規化を行うと、
0.11001011 × 2-2 になるので、

1 1 0 0 1 0 1 1

切り捨てられずに、仮数部に 1 1 も入ることができる。
2-2 は指数部にセットされる。

単精度浮動小数点数

倍精度浮動小数点数

指数部の表現方法
浮動小数点数の指数部の表現方法には 2 つの方法がある。

  1. 2 の補数を使う方法
    指数部が 8 ビットの場合 -128~127まで表現できる
  2. イクセス表現(exccess げたばき)を使う方法
    イクセス表現では、8 ビットの場合、-127を 00000000 とする。そこから 1 つづつ増やしていき、
    128 を 11111111 とする。0 から 255 で -127 から 128 までを表現する。
    (注:本当は1から254までで、(表現は-126 から 127 まで)。指数部に入るオール0(00000000)とオール1(11111111)は特別の意味を持つ) 本来の指数値に 127 を加えたものを指数部に入れる。
    例えば、指数部が -5 のとき、指数部には、-5 + 127 = 122 が入る。
    元の指数を求めるには、指数部に入っている数から 127 を引いたものになる。


e. BCD(Binary Coded Decimal :2進化10進)

2 進化 10 進コード(BCDコード:Binary Coded Decimal code)
10 進数の各けたを、4 ビットの 2 進数で表現する。
正負の表現ができない。
4ビット使って、0~9までしか表現しないので無駄がある。
ただ、人が扱うには扱いやすい。2進数を10進数のように扱うことができる。


f. ゾーン10進数

10 進数 1 けたの値を 8 ビットで表現する。 8 ビットのうち上位 4 ビットをゾーン部とよび、データが数値であることを示すコード(JISでは(0011)、EBCDICでは(1111))が格納される。
ただし、符号を表すために最下位けたのゾーン部は、正数の場合には(1100)、負数の場合には(1101)が入る
下位4ビットはBCDと同じ表現方法。

<特徴>
入出力時に用いられる。演算効率が悪く、通常はパック 10 進法に変換されてから演算が行われる。
ゾーン部があるため、格納効率が悪い。


g. パック10進数

10 進数の各けたを BCDコードを用いて表現するのはゾーン10進数と同じ。4ビットで1桁を表現する。
よって、1 バイトには 10 進数値 2 けたが格納される。
ただし、最下位けたの末尾 4 ビットは符号を表す(符号ビットはゾーン 10 進数と同じ)。

<特徴>
演算時に用いられる。演算が速く、格納効率もよい。
10進数の桁数が奇数の場合は、うまくバイト単位に収まるが、偶数桁の場合は、4ビット足りなくなるので、先頭に4ビットの0を補ってバイト単位にする。。


  [ 例題 ] 
  1. 平成30年度春期 問01  2の補数
  2. 平成21年度秋期 問02  浮動小数点
  3. 平成20年度春期 問03  2の補数
  4. 平成20年度秋期 問03  2の補数
  5. 平成19年度春期 問04  浮動小数点 正規化
  6. 平成19年度秋期 問03  2の補数
  7. 平成18年度春期 問03  2の補数
  8. 平成18年度春期 問04  浮動小数点
  9. 平成18年度秋期 問04  浮動小数点数
  10. 平成18年度秋期 問05  2の補数


     

www.it-shikaku.jp