2進法

  一般にXを自然数としたときに、

   X=a・2+ai−1・2i−1+・・・+a・2+a, a=0 or 1

 

で表わせる。 このような表わし方を2進法、また2進法によって表わされた数

(0と1だけからなる)を2進数という。 以下、10進数と2進数との表記法

を次のように添え字(10、2)で区別する。

   1310=1101 

 

2進数 => 10進数 の変換

    10101010=2+2+2+2=17010

 

  別法

    a =a・2+a・2+a1

    =(a・2+a)・2+a

  例

   1111101000

         1・2+1=3

         3・2+1=7

         7・2+1=15

        15・2+1=31

         31・2+0=62

        62・2+1=125

       125・2+0=250

       250・2+0=500

       500・2+0=1000  答 1000

 

2進数 => 8進数 の変換

    1111101000=(?)

 下位から3ビットづつ区切る。

1 111 101 000

1  7  5   0  => 100010 = 1750

 

2進数 => 16進数 の変換

  16=2  => 2進数の4桁ごとに位が変わる、 また、10進法の,

10,11,12,13,14,15はそれぞれ、A、B,C,D,E、Fと表記する。

 

11 1110 1000

 3   E    8   => 100010 = 3E816

 

 10進数 => 2進数 の変換

  例

    25 = 2・12+ 1  余り= a

    12 = 2・6 + 0      a

     6 = 2・3 + 0      a

     3 = 2・1 + 1      a

            ↑

           a

 

    2510 = 11001

 

  整数

   16ビットで表わせる最大の整数

 

    X=215+214+・・・+2+1

   2X=216+215+・・・+2+2

    X=2X−X=216−1=65536−1=65535

 

1ワード(16ビット)で表わせる数をaとすれば、

     0≦a≦216−1=65535

  

となる。 これを符号無し整数(unsigned integer) という。 

これでは負の数を表わせないので、

符号付き整数(signed integer) をa’として、次のように定義する。

      −215=−32768≦a’<32768 

  かつ、

     a<215のときは   a=a’であり、

      a≧215のときは  a’=a−216  である。

 

このような表わしかたを2の補数表示という。 いまaは16ビット長なので、

15は一番左のビットが1であることを意味している。

このビットを符号ビットという。

    符号ビット=0 =>  0≦a’<215

    符号ビット=1 =>  −215≦a’<0 

  1) 2の補数表示で 0000000011111111 は

       2+2+・・・・+2+1=2-1=256-1=255

を表わす。

 

  2) 1111111111111111は符号ビットが立っているので、216を引く。すなわち、

       (216-1)-216=-1

全てのビットが1のときは−1を表わしている。

 

3) 1111111100000000 はやはり216を引くと、

       (216-1)-(2-1)-216=-2=-256

となる。

    

 いま、a’の全てのビットを逆転した数をb’とすると

      a’+b’= 1111111111111111 = −1

   となる。 すなわち、2の補数表示では

     −a’= b’+1 となる。 このことは、引算は足し算の

装置を使って行えることを示している。

     x−a’= x+(−a’)=x+b’+1

 

例 −1000を2の補数表示で表わせ

    100010= 0000001111101000

-100010 = 1111110000010111+1

        = 1111110000011000

 

実数(単精度浮動小数点表示)(N88Basicを例に)

    計算機は実数を近似値としてしか扱えない。 1つの実数を2つ

の整数(a,bとする)で表わす。

        a・2  (a,bとも2の補数表示)

 

aを仮数部、bを指数部といい、単精度浮動小数点表示ではaは24ビット、

bは8ビットとなっている。 

 例

     1) a=30000,b=10 のとき    30000・210=30720000

     2) 100000は 25000・2 であるから   a=25000,b=2

     3) 0.1 は?

     0.1・226=6710895.2 なので0.1=6710895・2−26+0.2・2−26となる。

aを24ビット長の2の補数表示としたとき、a=6710895,b=-26 とすればよい。

この場合、有効桁数が7桁で0.2・2−26の誤差となる。

 

N進数とシフト演算

シフト演算:n進数の数をk桁分シフト(桁あふれはない)

・左シフト・・元の数のn倍になる。

・右シフト・・元の数のn-k倍になる。   

算術シフト:符号ビットは変わらない。

回転(循環)シフト:

・あふれたビット列が反対側の空ビット位にはいる。

論理シフト:

   ・シフト後の空ビット位に0がはいる。

 

例題:2進数の0.111は10進数ではいくらになるか。

  0.1:   2-1=0.5

  0.01:  2-2=0.25

+ 0.001:  2-3=0.125


 0.111 =   0.875

 

問題 2進数の0.111111111は10進数ではいくらになるか。