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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

2025年更新

Avatar for Naoki Kato

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 情報とは

    意味 を持つものを広くさす概念 情報
  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 (⼆進数1桁) HかLか (⼆進数1桁) HかLか 加算結果(1桁⽬) 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 1000本の睡眠薬入りワイン問題

    1000本の中に1本だけ睡眠薬が入っています 睡眠薬入りワインを飲むと 10~20分後に寝てしまい,20分は目が覚めません 30分以内にどのワインに睡眠薬が入っているかを 調べるには最小何人必要か? 最小を考えないなら,一番簡単な答えは1000人 誰か1人が寝るので,その人が飲んだワインが答え おまけ
  9. by Naoki Kato © Naoki Kato © Naoki Kato 色々な回答?

    999人 誰も寝なかったら,飲まれてないワイン 500人 1回目500本を試す,20分後に残り500本を・・・・🙅🙅 500人 1人目に1番と2番と3番 2人目に3番と4番と5番 500人目に999番と1000番と1番 果たして最小人数は??? おまけ
  10. by Naoki Kato © Naoki Kato © Naoki Kato 5~8本なら

    おまけ 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 3人いると (3bitあると) 最大8種類 (23) を区別可能 0 0 0
  11. by Naoki Kato © Naoki Kato © Naoki Kato コンピュータのマルチメディア化

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

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

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

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

    基本は,単純に,数を二進記数法で表す 数の表現 0010101010001010(2) 2A8A(16)
  17. 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ビット長の場合) 数の表現
  18. by Naoki Kato © Naoki Kato © Naoki Kato 十進記数法から二進記数法への変換

    2で割り算をしていく 2)19 2) 9 1 2) 4 1 2) 2 0 2) 1 0 0 1 19(10) =10011(2) (参考)基数変換 商 余り 余りを逆順に読む
  19. 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ビットの場合) 整数の表現
  20. 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ビットの場合) 整数の表現
  21. by Naoki Kato © Naoki Kato © Naoki Kato 1の補数の場合の加算

    二進記数法として加算後, 桁があふれたときはそれを加算 +3(0011) +)+1(0001) (0100)+4 +1(0001) -1(1110) +)-2(1101) +)-2(1101) 1110 -1 11011 1 1100 -3 整数の表現
  22. by Naoki Kato © Naoki Kato © Naoki Kato 2の補数

    負の整数は,1 桁多い 2 のべき乗の値から引く (最上位が1であとは0) -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 整数の表現
  23. 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 整数の表現
  24. by Naoki Kato © Naoki Kato © Naoki Kato 十進記数法と二進記数法の意味

    十進記数法 1 0 9 二進記数法 1 0 1 = 5(10) 実数の表現 102=百が⼀個 101=⼗は無し 100=⼀が九個 22=四が⼀個 21=⼆は無し 20=⼀が⼀個
  25. 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=⼋分の⼀が⼀個
  26. 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 実数の表現
  27. by Naoki Kato © Naoki Kato © Naoki Kato 十進記数法の小数を二進記数法に変換す

    る方法 小数部分に2を掛けていく 0.625 2 1.250 2 0.50 2 1.0 0.625(10) =0.101(2) (参考)基数変換
  28. 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 を 2 進数で表記すると循環小数 0.01010101・・・ 実数の表現
  29. 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 実数の表現 & 丸め誤差
  30. by Naoki Kato © Naoki Kato © Naoki Kato コンピュータによる計算時の問題

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

    符号部,指数部,仮数部で表現 実数の絶対値 = 仮数部×基数指数部 0010110 = +1.110×2010 = +1.110×2 -1 = +0.111 = +0.875 (符号部1ビット+指数部3ビット+仮数部3ビット) 実数の表現 111 → 4 110 → 3 101 → 2 100 → 1 011 → 0 010 → -1 001 → -2 000 → -3
  33. by Naoki Kato © Naoki Kato © Naoki Kato 浮動小数点

    10進記数法で考えてみます... 7桁使えるとき 固定小数点だと +999999~-9999999 +99999.9~ -999999.9 : 浮動小数点(仮数部3桁)だと +999×10+99~ +001×10-99 0 -001×10-99 ~ -999×10+99 実数の表現
  34. by Naoki Kato © Naoki Kato © Naoki Kato 浮動小数点の特徴

    たとえば整数は 仮数部が3桁(0~999)の場合 0 1 2・・9 10・・999 1000 1010 ・・9990 10000 10100 X × 100 X × 101 X × 102 実数の表現 1000以降は10おきになる 10000以降は100おきになる
  35. by Naoki Kato © Naoki Kato © Naoki Kato 浮動小数点による計算時の問題

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

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

    実数の表現 0.1 0.1 =5.7-5.6 =400.2-400 =1355-1352 0.1 0.2 0.3 3 =135.5-135.2
  39. 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 など現社会で用いられる 基底数が無限小数=有限桁では正確に表現できない! 誤差の少ない数の表現
  40. by Naoki Kato © Naoki Kato © Naoki Kato お

    おし しま まい い 数の表現