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

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

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

Naoki Kato

April 26, 2023
Tweet

More Decks by Naoki Kato

Other Decks in Education

Transcript

  1. by Naoki Kato © Naoki Kato © Naoki Kato 情報とは

    意味 を持つものを広くさす概念 情報
  2. by Naoki Kato © Naoki Kato © Naoki Kato 無形である情報を

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

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

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

    この二つの状態を 0 と 1 で表現 ビット(bit:binary digit) コンピュータにおける情報の表現
  7. 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 種類の状態が表現可能 コンピュータにおける情報の表現 ビット列
  8. by Naoki Kato © Naoki Kato © Naoki Kato コンピュータのマルチメディア化

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

    ビット列 01010001 だと長たらしい ビット列 01010001 を二進記数法による数とみなし 十六進記数法 51h を用いて表現することが多い コンピュータにおける情報の表現
  10. 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 : : :
  11. by Naoki Kato © Naoki Kato © Naoki Kato コンピュータから情報を出し入れする

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

    コンピュータにおける情報の表現 東 西 南 北 00 01 10 11 東 西 南 北 符 号 化 複 合 化
  13. by Naoki Kato © Naoki Kato © Naoki Kato 数をビット列で表現する

    基本は,単純に,数を二進記数法で表す 数の表現 0010101010001010(2) 2A8A(16)
  14. 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ビット長の場合) 数の表現
  15. 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ビットの場合) 整数の表現
  16. 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ビットの場合) 整数の表現
  17. 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ビットの場合) 整数の表現
  18. 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 整数の表現
  19. by Naoki Kato © Naoki Kato © Naoki Kato 十進記数法と二進記数法の意味

    十進記数法 1 0 9 二進記数法 1 0 1 = 5(10) 実数の表現 102=百が⼀個 101=⼗は無し 100=⼀が九個 22=四が⼀個 21=⼆は無し 20=⼀が⼀個
  20. 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=⼋分の⼀が⼀個
  21. 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の補数
  22. 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・・・ 実数の表現
  23. 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 実数の表現 & 丸め誤差
  24. by Naoki Kato © Naoki Kato © Naoki Kato コンピュータによる計算時の問題

    ∞ Σ2-n を計算したい n=1 無限回数繰り返すことはできないので N 回で打ち切り ∞ Σ2-n 分の誤差が発生 n=N+1 (参考)実数の表現 打ち切り誤差
  25. 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の範囲 小数部を使うと,さらに範囲は狭まる より表現範囲を広げたい 浮動小数点 実数の表現
  26. by Naoki Kato © Naoki Kato © Naoki Kato 浮動小数点

    符号部,指数部,仮数部で表現 実数の絶対値 = 仮数部×基数指数部 0101110 = +0.110×2101 = +0.75×22 = +3.0 (符号部1ビット+指数部3ビット+仮数部3ビット) 実数の表現
  27. 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 に
  28. 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)
  29. by Naoki Kato © Naoki Kato © Naoki Kato 浮動小数点による計算時の問題

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

    二次方程式の解の公式 で 4ac が限りなく0に近いと 小さい解を求めるとき (限りなくbに近い数値 ‒ b)の計算が発生 桁落ちが発生し,解が不正確に! ※小さい解βは, 1/大きい解αを求めてから で求める 実数の表現 x = −b± b2 − 4ac 2a 1 α c a
  31. 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 実数の表現 情報落ち
  32. by Naoki Kato © Naoki Kato © Naoki Kato 実数の符号化

    浮動小数点 桁落ち,情報落ち 丸め誤差と打ち切り誤差もある 固定小数点に比べ, 扱える絶対値の範囲は増えるが,精度は落ちる 計算処理も複雑=速度も遅い 利用する数値の範囲が限られ, 精度が求められる計算には固定小数点が使われる 実数の表現
  33. 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
  34. 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 など現社会で用いられる 基底数が無限小数=有限桁では正確に表現できない! 誤差の少ない数の表現
  35. 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 誤差の少ない数の表現
  36. 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 1 誤差の少ない数の表現 2+9は11 1+0は1 1+1は2
  37. by Naoki Kato © Naoki Kato © Naoki Kato お

    おし しま まい い 数の表現