狠狠撸

狠狠撸Share a Scribd company logo
計算機理論入門 3
      2012 年度後期
        垂水共之
tarumi@ems.okayama-u.ac.jp
             20121003
   20121017 講義終了後、誤植を修正
2 進数、 8 進数、 10 進数、 16 進数
   ? 10 進数
     – 0から9まで 10 種類の「文字」を使い
       10のベキ乗で位取り
例1)  1  2  3 = 1 × 102 + 2 × 101 + 3 × 100
     ↑  ↑  ↑
      10 2 10 1 10 0
     の  の  の (例2) 1 0 1 = 1 × 2  + 0 × 2  + 1 × 2
                                    2      1


     位  位  位      ↑ ↑ ↑ =  4   +  0   +  1   
                         22 21 20
                         の の の
                         位 位 位
   ? 2進数
     – 0と1の 2 種類の「文字」を使い
       2のベキ乗で位取り
     – 電気の Off 、 On に対応して0,1
     – ビット (bit)  0,1の 2 つの状態しか取れない情
       報の単位
進数表記
? 101
   – 10 進数?
   – 2 進数?


? 101 (10)


? 101 (2)

? ああ
10進2進変換(その1 整数の場合)
  ? 2 進数 to 10進数
     – (位取り)2進数の各桁に2の対応するベキ乗をかけて加える

    bn bn-1…b2 b1 b0  
  = bn × 2n+bn-1 × 2n-1+…+b2 × 22+b1 × 21+b0 × 20
  ここにbn,bn-1,…,b2,b1,b0は0か1.

  ? 10 進数 to 2進数
     – 10進数の値を2で割ってその余りを,商が0になるまで求め
       て行く
     – 上の式の両辺を2で割れば、 1 桁右にずれて
    bn bn-1…b2 b1 b0  ÷ 2 
  =  bn bn-1…b2 b1 余り b0  

     bn × 2n  +bn-1 × 2n-1+…+b2 × 22+b1 × 21+b0 × 20 ÷ 2
  = bn × 2n-1+bn-1 × 2n-2+…+b2 × 21+b1 × 20
                余り b0
a0を与えられた10進数としたとき,
    a1  = a0 ÷ 2 + b0 
    a2  = a1 ÷ 2 + b1 
       :
    an = an-1 ÷ 2 + bn-1
    an+1 = an  ÷ 2 + bn 
ここに bi(i=0,1,…,n)は0か1,an+1=0 とする。
このとき,
    a0(10)=bn bn-1 …b2 b1 b0(2)
となる。
例 3   10 進数の123を 2 進数へ変換

   2)123
    2)61  ...1(=b0)
    2)30  ...1(=b1)
    2)15  ...0(=b2)
     2)7  ...1(=b3)
     2)3  ...1(=b4)
     2)1  ...1(=b5)
       0  ...1(=b6)
よって 123(10) = 1111011(2) 
10進2進変換(その2 純小数 (整数部の無い)
        の場合)
? 2進数から10進数に変換するには,下のように2進数
  の各桁に2の対応するベキ乗をかけて加えればよい。一
  般には次式で表される。

     0.b-1b-2b-3……………(2)
   = b-1 × 2-1+b-2 × 2-2+b-3 × 2-3……………(10)
   ここにb -1 ,b -2 ,…,b -(n-1) ,b -n は0か1

? この式の両辺を2倍すると小数点の位置が一桁右にずれ
      b-1.b-2b-3……………(2)
    = b-1+b-2 × 2-1+b-3 × 2-2……………(10)

? となり、整数部にb-1が浮かび上がってくる。整数部の
  b-1を横に置いて、
      0.b-2b-3……………(2)
    = b-2 × 2-1+b-3 × 2-2……………(10)
(例4) 0.1 (10) を2進数に変換する。
                              0.1
                × 2
   |----------------------- 0.2
   |              × 2
     ||---------------------- 0.4
     ||                       ×   2
     |||--------------------- 0.8
     |||                      ×   2
     ||||-------------------- 1.6
     ||||                     ×   2
     |||||------------------- 1.2
     |||||                    ×   2
     ||||||------------------ 0.4
   ↓↓↓↓↓↓
  0.000110……………


    ? 以下同様に行えば、 0011 が繰り返す循環小数とな
      る
    0.1(10) = 0.00011(2)
一般の小数の場合
? 整数部と小数部とに分け、
  各々に上記の方法で変換すればよい。

? 整数部
 – 2で割った余りを


? 小数部
 – 2を掛けた整数部を
8 進数、 16 進数
? 10進数を2進数に変換すると,桁数が多くる。
? このため3個ずつ区切って8進数(23=8)で表現す
  ることも多い。
(例5)  1 | 111 | 011(2) = 173(8)
                = 1 × 82+7 × 81+3 × 80
? 近年は別の理由から4個づつ対応させて16進数(24
  =16)で表現することが多い。
 – 16進数では1つの桁を表すのに16種類の文字がいるので,
   0,1,…,9,A,B,C,D,E,Fを用いている。

(例6)  111 | 1011(2) = 7B(16)
                = 7 × 161+13 × 160
進数変換

 10進数   2進数  8進数 16進数
     0   0000   00    0   ? 【注意】8進数、1
     1   0001   01    1     6進数に変換する場
     2   0010   02    2
     3   0011   03    3
                            合、2進数を経由し
     4   0100   04    4     なくてもよい。
     5   0101   05    5   ? 10進2進の変換方
     6   0110   06    6
     7   0111   07    7     法で2をかけたり、
     8   1000   10    8     2で割ったりすると
     9   1001   11    9     ころで、2の代わり
    10   1010   12    A
    11   1011   13    B     に8、または16を
    12   1100   14    C     用い、余り、または
    13   1101   15    D     整数部を取り出せば
    14   1110   16    E
    15   1111   17    F     よい。
ビット、バイト、語
? ビット(bit)
  – 計算機の最小記憶単位であり,1ビットで0,1の2種類の状
    態を表現する。


? バイト(Byte)
  – 文字の記憶単位であり,昔の計算機では1つの文字を表現する
    のに6ビットを用いるものが多かったが,近年の計算機では1
    つの文字を表現するのに8ビット又は9ビットを用いている。
    これをバイトという。


? ニブル( nibble ) 
  – 最近は1B=8 bits のマシンが増え、 16 進数で表現する機会が
    増えてきた。このため 16 進数一桁に対応する 4bits を「ニブル
    」という。
? 語 word
  – 数値の記憶単位であり,そのビット数は機種によりまちまちで
    ある。近年のマイコンを除き次のような数の機種がある。

  –      1語 = 16ビット
  –         = 32
  –         = 36
  –         = 48
  –         = 60

  – 以前は小型,中型では16ビット(=2バイト)、大型では3
    2ビット(=4バイト)以上と分かれていたが、近年では32
    ビットが普通になった。昨年あたりから64ビットが普及し始
    めている。

  – 以下の例では1バイト=8ビット,1語=16ビット=2バイ
    トで述べることが多い。
数値の表現形式
? 数値の記憶単位である「語」の中に、実際の値をどのよ
  うに格納するか、それが「数値の表現形式」である。

 – 固定小数点形式 fixed binary

 – 浮动小数点形式 flowting binary

 – 10 進数形式  BCD = binary coded decimal


? よく用いられるのは上の2つ、固定小数点形式と浮動小
  数点形式である。
固定小数点形式      fixed binary
? 小数点の位置が固定された表現形式
  ‥‥通常,最右桁の次に小数点の位置を仮定する‥‥
  であり,通常整数値に用いる。

(例1) 7の固定小数点表現
    0000000000000111
                    ↑
                  ここに小数点を仮定する
浮动小数点形式          flowting binary
? 固定小数点形式では小数点の位置が固定されているため
  通常の実数(少数)を表現できない。
? このため10進数の精度表現で用いたように
    1500 と 0 . 15 × 10 4
  小数と10のベキ乗の積という形と似た形式で表現する
  のが浮动小数点形式である。計算機では10のベキ乗と
  は限らず一般には
    0.m 1 m 2 ??? × be 1 e 2 ???
  (例えば,0.1101 (2) × 2 11(2) = 110.1 (2) = 6
  .5 (10) )

 という形式で表す。ここで
 m 1 m 2 ??? の部分を〈仮数部〉,
 e 1 e 2 ???
             の部分を〈指数部〉,
 b を〈底〉という。
つづき

(例2) 0.1101(2) × 211(2) の浮動小数点表現
    ???0011 | 0 | 1101???
     指数部   ↑ 仮数部
          この位置を仮の小数点(仮想小数点)という。
負数の表現形式
? この節では固定小数点に限って話しをしていく
 – 浮動小数点のときには,仮数部の負数の表現形式と考えればよ
   い
? 正整数の固定小数点形式表現は前節で述べた通りで
? 負の整数はどのように表現したらよいか考えてみよう。

? 符号付き絶対値表現

? 下駄上げ表現

? 2の補数表現
符号付き絶対値表現
? 1語を構成するbit列のうち,特定のビットが符号を
  表すことにする。
? 通常第0ビットを符号に用い,オフ(0)のとき 正 
  又は 零,オン(1)のとき 負を表す。
? 残りのビットは符号を除いた絶対値を固定小数点形式で
  表現する。
(例1)  10(10) = 0000000000001010(2)
              ↑
              正

     -10(10) =1000000000001010(2)
              ↑
              負
下駄上げ表現
? 負数の表現形式の一つとして、「下駄はかせ」の方式が
  ある。いわゆるテストの点数に下駄を履かせて成績を付
  けるやつである。テストの点数の場合には0点から10
  0点までの値しかなく、下駄を例えば30点とすれば、
  テストの生点に30点加えたものが成績の点数になる。

? 計算機の値の表現の場合も考え方は同じで、表現したい
  生の値に「下駄」の値を加えた値を,内部的に表現する
  ことにする。「下駄」の値としては最左端ビットだけを
  1にしたもの(1語nビットの場合 2 n-1 )を用いるの
  が普通である。
下駄上げ表現(つづき)
100 (10) =1100100 (2) をあらわす場合、
           0000000001100100
        +)1000000000000000  ( 下駄 )
           1000000001100100

-100 (10) では
           1000000000000000  ( 下駄 )
        -)0000000001100100
           0111111110011100




    ? 結果的に最左端ビットが符号を表すことになり、0
      の時負、1の時正の値を表す。
    ?  この下駄上げ表現は「浮動小数点」の「指数部」
      の表現として使われることが多い。
2の補数表現
 ? 与えられた負数の絶対値を固定小数点表現したものを,
   各ビットの0,1を反転し(“1の補数”という),
   その値に1を加える(“2の補数”という)
 ? これを,与えられた負数の表現形式とするものであり,
   結果として第0ビットが符号を表す。
(例2)  -10(10)の“2の補数表現”
 絶対値  (+10(10))   0000000000001010
 ビット反転(1の補数)    1111111111110101
 1加える (2の補数)    1111111111110110


 ? 負数の絶対値の求め方
 与えられた負数        1111111111110110
 ビット反転      0000000000001001
 1加える       0000000000001010
? 計算機では2の補数表現が使われる。
? 符号付き絶対値表現では 2 つの値の足し算は、符号が
  (+、+)、(+、-)、(-、+)、(-、-)
  に応じて処理する必要があつ。
? 2の補数表現の時には2つの値の符号を考えずに、単純
  に足し算を行えばよい。

? このことを、例で見ていこう。
例3) 5 + 10 = 15
      0000000000000101
   +) 0000000000001010
      0000000000001111


例4) 5 + (-10) = -5
      0000000000000101
   +) 1111111111110110
      1111111111111011



(例5) (-5) + 10 = 5 (例6) (-5) + (-10) = -1
      1111111111111011
                          111111111111101
   +) 0000000000001010
                       +) 111111111111011
     10000000000000101
                         1111111111111000
     ↑                   ↑
    はみ出した部分は無視する        はみ出した部分は無視する
練習問題
? 問1  10 進数の123.675を 2 進数、 8 進数、 16
  進数に変換しよう。

? 問2  10 進数のー123を 2 進数、 8 進数、 16 進数に
  変換しよう。

? 問3 なぜ 2の補数表現,1の補数表現と呼ばれるか
   浮動小数点の仮数部に適用して考えよ。

? 問4 1語のビット数をnとしたとき符号つき絶対値表
  現,2の補数表現とでは,各々どのような値の範囲を表
  現できるか?
単位  KMGTPE
? 計算機では2進数が使われるため、2の巾乗で数えるこ
  とが多い。2の10乗が1024と1000に近いため
  、計算機の世界では2 10 を1K(キロ)として取り扱う
  。すなわち、
 1K(キ ロ)    = 210     = 210   (千)
 1M(メ ガ)    = 210K    = 220   (百万)
 1G(ギ ガ)    = 210M    = 230   (十億)
 1T(テ ラ)    = 210G    = 240   (一兆)
 1P(ペ タ)    = 210T    = 250   (千兆)
 1E(エクサ)    = 210P    = 260   (百京)
浮動小数点の表現
? IEEE754  交換形式

  – 符号ビット
  – 指数部
     ? 下駄上げ表現

  – 仮数部
     ? 絶対値表現
32bits 単精度
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10   9   8   7   6   5   4   3   2   1   0

                                                               

符     指数部( 8 ビット)                                仮数部( 23 ビット、ケチ表現)
号



    ? 指数部
       –   下駄      01111111
       –   1 ~ 254
       –   0 のとき、仮数部0であればゼロ
       –   255 のとき、無限大(仮数部0)、または NaN (仮数部 非
           0)
    ? 仮数部
       – 絶対値表現
       – 1.xxxx に正規化し、頭の1は記録しない
64bits 倍精度                        128bits4 倍精度
  指数部  11 ビット                       指数部  15 ビット
  仮数部  52 ビット                       仮数部  112 ビット
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10                           9       8       7       6       5       4       3       2       1       0

    0   0   1   1   1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0       0       0       0       0       0       0       0       0       0       0

符
            指数部( 8 ビット)                                             仮数部( 23 ビット、ケチ表現)
号

        3               F               8               0               0               0                               0                               0

    0   0   1   1   1   1   1   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0       0       0       0       0       0       0       0       0       0       0




                    3F800000     10 進数に直すと?




                10 進数の -118.625 はどんなビット配列になるかな?

More Related Content

计算机理论入门03

  • 1. 計算機理論入門 3 2012 年度後期 垂水共之 tarumi@ems.okayama-u.ac.jp 20121003 20121017 講義終了後、誤植を修正
  • 2. 2 進数、 8 進数、 10 進数、 16 進数 ? 10 進数 – 0から9まで 10 種類の「文字」を使い 10のベキ乗で位取り 例1)  1  2  3 = 1 × 102 + 2 × 101 + 3 × 100      ↑  ↑  ↑       10 2 10 1 10 0      の  の  の (例2) 1 0 1 = 1 × 2  + 0 × 2  + 1 × 2 2 1      位  位  位      ↑ ↑ ↑ =  4   +  0   +  1         22 21 20      の の の      位 位 位 ? 2進数 – 0と1の 2 種類の「文字」を使い 2のベキ乗で位取り – 電気の Off 、 On に対応して0,1 – ビット (bit)  0,1の 2 つの状態しか取れない情 報の単位
  • 3. 進数表記 ? 101 – 10 進数? – 2 進数? ? 101 (10) ? 101 (2) ? ああ
  • 4. 10進2進変換(その1 整数の場合) ? 2 進数 to 10進数 – (位取り)2進数の各桁に2の対応するベキ乗をかけて加える     bn bn-1…b2 b1 b0     = bn × 2n+bn-1 × 2n-1+…+b2 × 22+b1 × 21+b0 × 20   ここにbn,bn-1,…,b2,b1,b0は0か1. ? 10 進数 to 2進数 – 10進数の値を2で割ってその余りを,商が0になるまで求め て行く – 上の式の両辺を2で割れば、 1 桁右にずれて     bn bn-1…b2 b1 b0  ÷ 2    =  bn bn-1…b2 b1 余り b0        bn × 2n  +bn-1 × 2n-1+…+b2 × 22+b1 × 21+b0 × 20 ÷ 2   = bn × 2n-1+bn-1 × 2n-2+…+b2 × 21+b1 × 20                 余り b0
  • 5. a0を与えられた10進数としたとき,     a1  = a0 ÷ 2 + b0      a2  = a1 ÷ 2 + b1         :     an = an-1 ÷ 2 + bn-1     an+1 = an  ÷ 2 + bn  ここに bi(i=0,1,…,n)は0か1,an+1=0 とする。 このとき,     a0(10)=bn bn-1 …b2 b1 b0(2) となる。
  • 6. 例 3   10 進数の123を 2 進数へ変換    2)123     2)61  ...1(=b0)     2)30  ...1(=b1)     2)15  ...0(=b2)      2)7  ...1(=b3)      2)3  ...1(=b4)      2)1  ...1(=b5)        0  ...1(=b6) よって 123(10) = 1111011(2) 
  • 7. 10進2進変換(その2 純小数 (整数部の無い) の場合) ? 2進数から10進数に変換するには,下のように2進数 の各桁に2の対応するベキ乗をかけて加えればよい。一 般には次式で表される。     0.b-1b-2b-3……………(2)   = b-1 × 2-1+b-2 × 2-2+b-3 × 2-3……………(10)   ここにb -1 ,b -2 ,…,b -(n-1) ,b -n は0か1 ? この式の両辺を2倍すると小数点の位置が一桁右にずれ     b-1.b-2b-3……………(2)   = b-1+b-2 × 2-1+b-3 × 2-2……………(10) ? となり、整数部にb-1が浮かび上がってくる。整数部の b-1を横に置いて、     0.b-2b-3……………(2)   = b-2 × 2-1+b-3 × 2-2……………(10)
  • 8. (例4) 0.1 (10) を2進数に変換する。                              0.1 × 2 |----------------------- 0.2 | × 2     ||---------------------- 0.4     ||                       ×   2     |||--------------------- 0.8     |||                      ×   2     ||||-------------------- 1.6     ||||                     ×   2     |||||------------------- 1.2     |||||                    ×   2     ||||||------------------ 0.4 ↓↓↓↓↓↓ 0.000110…………… ? 以下同様に行えば、 0011 が繰り返す循環小数とな る     0.1(10) = 0.00011(2)
  • 9. 一般の小数の場合 ? 整数部と小数部とに分け、 各々に上記の方法で変換すればよい。 ? 整数部 – 2で割った余りを ? 小数部 – 2を掛けた整数部を
  • 10. 8 進数、 16 進数 ? 10進数を2進数に変換すると,桁数が多くる。 ? このため3個ずつ区切って8進数(23=8)で表現す ることも多い。 (例5)  1 | 111 | 011(2) = 173(8)                 = 1 × 82+7 × 81+3 × 80 ? 近年は別の理由から4個づつ対応させて16進数(24 =16)で表現することが多い。 – 16進数では1つの桁を表すのに16種類の文字がいるので, 0,1,…,9,A,B,C,D,E,Fを用いている。 (例6)  111 | 1011(2) = 7B(16)                 = 7 × 161+13 × 160
  • 11. 進数変換  10進数   2進数  8進数 16進数      0   0000   00    0 ? 【注意】8進数、1      1   0001   01    1 6進数に変換する場      2   0010   02    2      3   0011   03    3 合、2進数を経由し      4   0100   04    4 なくてもよい。      5   0101   05    5 ? 10進2進の変換方      6   0110   06    6      7   0111   07    7 法で2をかけたり、      8   1000   10    8 2で割ったりすると      9   1001   11    9 ころで、2の代わり     10   1010   12    A     11   1011   13    B に8、または16を     12   1100   14    C 用い、余り、または     13   1101   15    D 整数部を取り出せば     14   1110   16    E     15   1111   17    F よい。
  • 12. ビット、バイト、語 ? ビット(bit) – 計算機の最小記憶単位であり,1ビットで0,1の2種類の状 態を表現する。 ? バイト(Byte) – 文字の記憶単位であり,昔の計算機では1つの文字を表現する のに6ビットを用いるものが多かったが,近年の計算機では1 つの文字を表現するのに8ビット又は9ビットを用いている。 これをバイトという。 ? ニブル( nibble )  – 最近は1B=8 bits のマシンが増え、 16 進数で表現する機会が 増えてきた。このため 16 進数一桁に対応する 4bits を「ニブル 」という。
  • 13. ? 語 word – 数値の記憶単位であり,そのビット数は機種によりまちまちで ある。近年のマイコンを除き次のような数の機種がある。 –    1語 = 16ビット –       = 32 –       = 36 –       = 48 –       = 60 – 以前は小型,中型では16ビット(=2バイト)、大型では3 2ビット(=4バイト)以上と分かれていたが、近年では32 ビットが普通になった。昨年あたりから64ビットが普及し始 めている。 – 以下の例では1バイト=8ビット,1語=16ビット=2バイ トで述べることが多い。
  • 14. 数値の表現形式 ? 数値の記憶単位である「語」の中に、実際の値をどのよ うに格納するか、それが「数値の表現形式」である。 – 固定小数点形式 fixed binary – 浮动小数点形式 flowting binary – 10 進数形式  BCD = binary coded decimal ? よく用いられるのは上の2つ、固定小数点形式と浮動小 数点形式である。
  • 15. 固定小数点形式 fixed binary ? 小数点の位置が固定された表現形式 ‥‥通常,最右桁の次に小数点の位置を仮定する‥‥ であり,通常整数値に用いる。 (例1) 7の固定小数点表現     0000000000000111                     ↑                   ここに小数点を仮定する
  • 16. 浮动小数点形式 flowting binary ? 固定小数点形式では小数点の位置が固定されているため 通常の実数(少数)を表現できない。 ? このため10進数の精度表現で用いたように 1500 と 0 . 15 × 10 4 小数と10のベキ乗の積という形と似た形式で表現する のが浮动小数点形式である。計算機では10のベキ乗と は限らず一般には 0.m 1 m 2 ??? × be 1 e 2 ??? (例えば,0.1101 (2) × 2 11(2) = 110.1 (2) = 6 .5 (10) ) という形式で表す。ここで m 1 m 2 ??? の部分を〈仮数部〉, e 1 e 2 ??? の部分を〈指数部〉, b を〈底〉という。
  • 17. つづき (例2) 0.1101(2) × 211(2) の浮動小数点表現     ???0011 | 0 | 1101???      指数部   ↑ 仮数部           この位置を仮の小数点(仮想小数点)という。
  • 18. 負数の表現形式 ? この節では固定小数点に限って話しをしていく – 浮動小数点のときには,仮数部の負数の表現形式と考えればよ い ? 正整数の固定小数点形式表現は前節で述べた通りで ? 負の整数はどのように表現したらよいか考えてみよう。 ? 符号付き絶対値表現 ? 下駄上げ表現 ? 2の補数表現
  • 19. 符号付き絶対値表現 ? 1語を構成するbit列のうち,特定のビットが符号を 表すことにする。 ? 通常第0ビットを符号に用い,オフ(0)のとき 正  又は 零,オン(1)のとき 負を表す。 ? 残りのビットは符号を除いた絶対値を固定小数点形式で 表現する。 (例1)  10(10) = 0000000000001010(2)               ↑               正      -10(10) =1000000000001010(2)               ↑               負
  • 20. 下駄上げ表現 ? 負数の表現形式の一つとして、「下駄はかせ」の方式が ある。いわゆるテストの点数に下駄を履かせて成績を付 けるやつである。テストの点数の場合には0点から10 0点までの値しかなく、下駄を例えば30点とすれば、 テストの生点に30点加えたものが成績の点数になる。 ? 計算機の値の表現の場合も考え方は同じで、表現したい 生の値に「下駄」の値を加えた値を,内部的に表現する ことにする。「下駄」の値としては最左端ビットだけを 1にしたもの(1語nビットの場合 2 n-1 )を用いるの が普通である。
  • 21. 下駄上げ表現(つづき) 100 (10) =1100100 (2) をあらわす場合、            0000000001100100         +)1000000000000000  ( 下駄 )            1000000001100100 -100 (10) では            1000000000000000  ( 下駄 )         -)0000000001100100            0111111110011100 ? 結果的に最左端ビットが符号を表すことになり、0 の時負、1の時正の値を表す。 ?  この下駄上げ表現は「浮動小数点」の「指数部」 の表現として使われることが多い。
  • 22. 2の補数表現 ? 与えられた負数の絶対値を固定小数点表現したものを, 各ビットの0,1を反転し(“1の補数”という), その値に1を加える(“2の補数”という) ? これを,与えられた負数の表現形式とするものであり, 結果として第0ビットが符号を表す。 (例2)  -10(10)の“2の補数表現”  絶対値  (+10(10))  0000000000001010  ビット反転(1の補数)    1111111111110101  1加える (2の補数)    1111111111110110 ? 負数の絶対値の求め方  与えられた負数 1111111111110110  ビット反転 0000000000001001  1加える 0000000000001010
  • 23. ? 計算機では2の補数表現が使われる。 ? 符号付き絶対値表現では 2 つの値の足し算は、符号が (+、+)、(+、-)、(-、+)、(-、-) に応じて処理する必要があつ。 ? 2の補数表現の時には2つの値の符号を考えずに、単純 に足し算を行えばよい。 ? このことを、例で見ていこう。
  • 24. 例3) 5 + 10 = 15       0000000000000101    +) 0000000000001010       0000000000001111 例4) 5 + (-10) = -5       0000000000000101    +) 1111111111110110       1111111111111011 (例5) (-5) + 10 = 5 (例6) (-5) + (-10) = -1       1111111111111011        111111111111101    +) 0000000000001010     +) 111111111111011      10000000000000101       1111111111111000      ↑       ↑     はみ出した部分は無視する      はみ出した部分は無視する
  • 25. 練習問題 ? 問1  10 進数の123.675を 2 進数、 8 進数、 16 進数に変換しよう。 ? 問2  10 進数のー123を 2 進数、 8 進数、 16 進数に 変換しよう。 ? 問3 なぜ 2の補数表現,1の補数表現と呼ばれるか  浮動小数点の仮数部に適用して考えよ。 ? 問4 1語のビット数をnとしたとき符号つき絶対値表 現,2の補数表現とでは,各々どのような値の範囲を表 現できるか?
  • 26. 単位  KMGTPE ? 計算機では2進数が使われるため、2の巾乗で数えるこ とが多い。2の10乗が1024と1000に近いため 、計算機の世界では2 10 を1K(キロ)として取り扱う 。すなわち、 1K(キ ロ)  = 210   = 210 (千) 1M(メ ガ)  = 210K  = 220 (百万) 1G(ギ ガ)  = 210M  = 230 (十億) 1T(テ ラ)  = 210G  = 240 (一兆) 1P(ペ タ)  = 210T  = 250 (千兆) 1E(エクサ)  = 210P  = 260 (百京)
  • 27. 浮動小数点の表現 ? IEEE754  交換形式 – 符号ビット – 指数部 ? 下駄上げ表現 – 仮数部 ? 絶対値表現
  • 28. 32bits 単精度 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0                                                                 符 指数部( 8 ビット) 仮数部( 23 ビット、ケチ表現) 号 ? 指数部 – 下駄 01111111 – 1 ~ 254 – 0 のとき、仮数部0であればゼロ – 255 のとき、無限大(仮数部0)、または NaN (仮数部 非 0) ? 仮数部 – 絶対値表現 – 1.xxxx に正規化し、頭の1は記録しない 64bits 倍精度 128bits4 倍精度   指数部  11 ビット   指数部  15 ビット   仮数部  52 ビット   仮数部  112 ビット
  • 29. 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 符 指数部( 8 ビット) 仮数部( 23 ビット、ケチ表現) 号 3 F 8 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3F800000     10 進数に直すと? 10 進数の -118.625 はどんなビット配列になるかな?