Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンピュータによる数の表現

 コンピュータによる数の表現

Naoki Kato
PRO

April 26, 2023
Tweet

More Decks by Naoki Kato

Other Decks in Education

Transcript

  1. by Naoki Kato
    ©Naoki Kato
    ©Naoki Kato
    数の表現
    Computer
    Science, Engineering and Literacy

    View Slide

  2. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    情報とは
    意味 を持つものを広くさす概念
    情報

    View Slide

  3. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    無形である情報を
    記録するには,伝えるには,…
    表現しなければならない
    表現の方法(表現メディア)
    身体表現:発声,身振り,言葉,…
    記号表現:文字,数字,記号,数式,表,…
    パタン表現:絵,図,映像,音楽,…
    情報

    View Slide

  4. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    情報の記録と伝達
    身体表現は 直接伝えることも可
    記号・パタン表現は たとえば紙上に
    様々な伝達メディアやマスメディアも利用可能
    情報

    View Slide

  5. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    コンピュータで扱えるのは二つの状態
    一般的なコンピュータは電気的なスイッチの集合
    入力は,電気が流れているか,流れていないか
    出力も,電気が流れているか,流れていないか
    電圧がかかっているか(H),かかっていないか(L)
    コンピュータにおける情報の表現
    電流を流す
    電流を流さない

    View Slide

  6. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    コンピュータで扱えるのは二つの状態
    どんなスイッチ回路も扱える状態は二つの状態
    コンピュータにおける情報の表現
    X
    Y
    S
    C
    HかLか
    HかLか HかLか
    HかLか
    D
    LD
    CK
    D
    LD
    CK
    D0
    D1
    CK
    LD
    HかLか
    HかLか

    View Slide

  7. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    コンピュータで扱えるのは二つの状態
    この二つの状態を 0 と 1 で表現
    ビット(bit:binary digit)
    コンピュータにおける情報の表現

    View Slide

  8. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    より多彩な状態は 0 と 1 の組合せで表現
    二つのビットを組み合わせると 4 種類の状態
    00, 01, 10, 11
    三つのビットを組み合わせると 8 種類の状態
    000, 001, 010, 011, 100, 101, 110, 111
    N 個のビットを組み合わせると
    2N 種類の状態が表現可能
    コンピュータにおける情報の表現
    ビット列

    View Slide

  9. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    コンピュータのマルチメディア化
    情報をビット列で表現すると
    コンピュータに入力(記憶)することができる
    なんらかの処理をすることができる
    コンピュータにおける情報の表現
    ⽂字や絵図 映像
    ⾳楽

    View Slide

  10. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    情報の表記
    ビット列 01010001 だと長たらしい
    ビット列 01010001 を二進記数法による数とみなし
    十六進記数法 51h を用いて表現することが多い
    コンピュータにおける情報の表現

    View Slide

  11. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    2進記数法と10進記数法と16進記数法数
    (参考)基数変換
    00000000 0 0h
    00000001 1 1h
    00000010 2 2h
    00000011 3 3h
    : : :
    00001010 10 0ah
    : : :
    00001111 15 0fh
    00010000 16 10h
    : : :

    View Slide

  12. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    コンピュータから情報を出し入れする
    コンピュータに情報を入れるには,
    情報をビット列(二進記数法の数)に変換する
    符号化
    コンピュータから情報を出すには,
    ビット列(二進記数法の数)を情報に戻す
    複合化
    コンピュータにおける情報の表現

    View Slide

  13. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    符号化と複合化
    コンピュータにおける情報の表現

    西


    00
    01
    10
    11

    西








    View Slide

  14. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    数をビット列で表現する
    基本は,単純に,数を二進記数法で表す
    数の表現
    0010101010001010(2)
    2A8A(16)

    View Slide

  15. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    自然数と0の符号化
    そのまま二進表記法を利用
    0 00000000 10 00001010
    1 00000001 11 00001011
    2 00000010 12 00001100
    3 00000011 13 00001101
    4 00000100 14 00001110
    5 00000101 15 00001111
    6 00000110 16 00010000
    7 00000111 17 00010001
    8 00001000 18 00010010
    9 00001001 :
    (8ビット長の場合)
    数の表現

    View Slide

  16. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    整数の符号化
    負の整数をどうするかがポイント
    符号-仮数部
    最上位ビットを符号とする
    +7 0111 -7 1111
    +6 0110 -6 1110
    +5 0101 -5 1101
    +4 0100 -4 1100
    +3 0011 -3 1011
    +2 0010 -2 1010
    +1 0001 -1 1001
    +0 0000 (-0 1000)
    (※4ビットの場合)
    整数の表現

    View Slide

  17. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    1の補数
    負の整数は,全ビットを反転させる
    (11・・11から引く)
    +7 0111 -7 1000
    +6 0110 -6 1001
    +5 0101 -5 1010
    +4 0100 -4 1011
    +3 0011 -3 1100
    +2 0010 -2 1101
    +1 0001 -1 1110
    +0 0000 (-0 1111)
    (4ビットの場合)
    整数の表現

    View Slide

  18. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    2の補数
    負の整数は,1 桁多い 2 のべき乗の値から引く
    -8 1000( 8と同じ)
    +7 0111 -7 1001( 9と同じ)
    +6 0110 -6 1010(10と同じ)
    +5 0101 -5 1011(11と同じ)
    +4 0100 -4 1100(12と同じ)
    +3 0011 -3 1101(13と同じ)
    +2 0010 -2 1110(14と同じ)
    +1 0001 -1 1111(15と同じ)
    +0 0000
    (4ビットの場合)
    整数の表現

    View Slide

  19. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    なぜ2の補数?
    正負の加減算が全て二進数の加算で表現可能
    +3(0011) +1(0001)
    +)+1(0001) +)-1(1111)
    0100 +4 10000 0
    +1(0001) -1(1111)
    +)-2(1110) +)-2(1110)
    1111 -1 11101 -3
    整数の表現

    View Slide

  20. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    十進記数法と二進記数法の意味
    十進記数法
    1 0 9
    二進記数法
    1 0 1 = 5(10)
    実数の表現
    102=百が⼀個
    101=⼗は無し
    100=⼀が九個
    22=四が⼀個
    21=⼆は無し
    20=⼀が⼀個

    View Slide

  21. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    十進記数法と二進記数法の意味
    十進記数法
    0.1 0 9
    二進記数法
    0.1 0 1 = 0.5(10)
    +0.125(10)
    =0.625(10)
    実数の表現
    10-1=⼗分の⼀が⼀個
    10-2=百分の⼀は無し
    10-3=千分の⼀が九個
    2-1=⼆分の⼀が⼀個
    2-2=四分の⼀は無し
    2-3=⼋分の⼀が⼀個

    View Slide

  22. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    固定小数点
    b1
    b0
    .b-1
    b-2
    = b1
    ×21+b0
    ×20+b-1
    ×2-1+b-2
    ×2-2
    (4 ビット,小数点部 2 ビットの場合)
    0000 = 0
    0001 = 0.25 1111 = ー0.25
    0010 = 0.5 1110 = ー0.5
    0011 = 0.75 1101 = ー0.75
    0100 = 1 1100 = ー1
    0101 = 1.25 1011 = ー1.25
    0110 = 1.5 1010 = ー1.5
    0111 = 1.75 1001 = ー1.75
    実数の表現
    負は2の補数

    View Slide

  23. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    固定小数点で表現できる実数
    小数点部 2 ビットの場合,
    表現できるのは 2-2(1/4=0.25)単位
    小数点部3ビットの場合は,2-3(1/8=0.125)単位
    小数点部4ビットの場合は,2-4(1/16=0.0625)

    1/3 は 1/2n での和ではあらわせない
    1/3 = 1/4+1/16+・・・
    1/3 を 2 進数で表記すると循環小数
    0.01010101・・・
    実数の表現

    View Slide

  24. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    固定小数点で表現できる実数
    1/3 = 0.01010101・・・
    = 0.0101
    1/3 + 1/3 + 1/3 =?
    0.0101
    0.0101
    +)0.0101
    0.1111=0.9375
    実数の表現
    &
    丸め誤差

    View Slide

  25. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    コンピュータによる計算時の問題

    Σ2-n を計算したい
    n=1
    無限回数繰り返すことはできないので N 回で打ち切り

    Σ2-n 分の誤差が発生
    n=N+1
    (参考)実数の表現
    打ち切り誤差

    View Slide

  26. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    固定小数点で表現できる実数
    4ビットの場合,すべてを整数部に使ったとしても
    23-1 (7) ~ 1 , 0 , -1 ~ (-8) -23
    8ビットの場合,127~-128
    32ビットでも,231-1~1,0,-1~-231の範囲
    小数部を使うと,さらに範囲は狭まる
    より表現範囲を広げたい
    浮動小数点
    実数の表現

    View Slide

  27. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    浮動小数点
    符号部,指数部,仮数部で表現
    実数の絶対値 = 仮数部×基数指数部
    0101110 = +0.110×2101
    = +0.75×22
    = +3.0
    (符号部1ビット+指数部3ビット+仮数部3ビット)
    実数の表現

    View Slide

  28. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    浮動小数点
    10進記数法で考えてみます...
    7桁使えるとき
    固定小数点だと +999999~-9999999
    浮動小数点(仮数部3桁,指数部3桁)だと
    +999×10500~ +001×10-499
    0
    -001×10-499 ~ -999×10500
    実数の表現
    999〜0

    500〜-499

    View Slide

  29. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    浮動小数点の特徴 (◯.◯×10◯)
    実数の表現
    0.0 1.0×100
    0.1×101 1.0×101
    0.1×102
    (10.0×100)
    1.0×102 ◯.◯×102で表現できる数
    ◯.◯×101で表現できる数
    ◯.◯×100で表現できる数
    (10.0×101)
    (10.0×102)

    View Slide

  30. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    浮動小数点による計算時の問題
    近い値同士の減算をすると...
    1.11111×210 有効桁数6桁
    ー)1.11101×210 有効桁数6桁
    0.00010×210
    =1.0×26 有効桁数2桁
    実数の表現
    桁落ち

    View Slide

  31. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    浮動小数点による計算時の問題
    二次方程式の解の公式
    で 4ac が限りなく0に近いと
    小さい解を求めるとき
    (限りなくbに近い数値 ‒ b)の計算が発生
    桁落ちが発生し,解が不正確に!
    ※小さい解βは,
    1/大きい解αを求めてから で求める
    実数の表現
    x =
    −b± b2 − 4ac
    2a
    1
    α
    c
    a

    View Slide

  32. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    浮動小数点による計算時の問題
    絶対値が大きく異なる値の加減算を行うと
    64(10)
    +0.125(10)
    を有効桁数6桁の2進数で計算すると
    1.00000×26
    +)1.00000×20
    1.00000×26
    +)0.000001×26
    1.00000×26
    実数の表現
    情報落ち

    View Slide

  33. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    実数の符号化
    浮動小数点
    桁落ち,情報落ち
    丸め誤差と打ち切り誤差もある
    固定小数点に比べ,
    扱える絶対値の範囲は増えるが,精度は落ちる
    計算処理も複雑=速度も遅い
    利用する数値の範囲が限られ,
    精度が求められる計算には固定小数点が使われる
    実数の表現

    View Slide

  34. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    実数の誤差を体験してみよう!
    実数の表現
    0.1 0.1
    =IF(A1=B1,"○","×")

    View Slide

  35. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    実数の誤差を体験してみよう!
    実数の表現
    0.1 0.1
    =5.7-5.6
    =400.2-400
    =1305-1352
    0.1
    0.2
    0.3
    3
    =130.5-135.2

    View Slide

  36. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    誤差があるとまずい場面がいろいろある
    金融計算などで誤差が出たら大変!!
    電卓ではせめて,1÷3×3 は 1 になってほしい
    十進数の世界をシミュレートする
    二進数の問題は
    少数は 1/2,1/4, 1/8,...,1/2n の和で表現
    0.1, 0.01, 0.001 など現社会で用いられる
    基底数が無限小数=有限桁では正確に表現できない!
    誤差の少ない数の表現

    View Slide

  37. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    二進化十進表現
    (BCD:Binary-coded decimal)
    十進記数法の 1 桁を 4 ビットの二進記数法で表現
    0 0000
    1 0001
    2 0010
    3 0011 12→0001 0010
    4 0100
    5 0101
    6 0110
    7 0111
    8 1000
    9 1001
    誤差の少ない数の表現

    View Slide

  38. by Naoki Kato
    © Naoki Kato
    © Naoki Kato
    十進計算のシミュレート
    12→0001 0010
    + 9→0000 1001
    0001 0001
    0001
    0010
    21←0
    00
    01
    10
    0 0
    00
    00
    01

    誤差の少ない数の表現
    2+9は11
    1+0は1
    1+1は2

    View Slide

  39. by Naoki Kato
    © Naoki Kato
    © Naoki Kato

    おし
    しま
    まい

    数の表現

    View Slide