Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
コンピュータによる数の表現
Search
Naoki Kato
PRO
April 26, 2023
Education
4
820
コンピュータによる数の表現
2025年更新
Naoki Kato
PRO
April 26, 2023
Tweet
Share
More Decks by Naoki Kato
See All by Naoki Kato
デジタル教科書の現在地と今後の展望
naokikato
PRO
0
41
複数カメラ活用による授業の遠隔参観や収録コンテンツ開発の促進
naokikato
PRO
0
25
教育DXの推進に向けて
naokikato
PRO
0
17
個別最適な学びと協働的な学びから児童の学びを深めさせるICT機器の活用
naokikato
PRO
1
32
なぜDXが必要なのか 〜教育の情報化の現状と展望〜
naokikato
PRO
0
35
教科書の捉えの変化
naokikato
PRO
0
37
教育現場における生成AIの活用とこれからの学校
naokikato
PRO
0
110
学校や家庭における効果的なICTの活用
naokikato
PRO
0
92
学校や家庭における効果的なICTの活用
naokikato
PRO
0
27
Other Decks in Education
See All in Education
SkimaTalk Teacher Guidelines
skimatalk
0
790k
i-GIP 2025 中高生のみなさんへ資料
202200
0
480
2025/06/05_読み漁り学習
nag8
0
140
ANS-C01_2回不合格から合格までの道程
amarelo_n24
1
250
日本の教育の未来 を考える テクノロジーは教育をどのように変えるのか
kzkmaeda
1
210
プレゼンテーション実践
takenawa
0
5.3k
サンキッズゾーン 春日井駅前 ご案内
sanyohomes
0
340
2025年度春学期 統計学 第3回 クロス集計と感度・特異度,データの可視化 (2025. 4. 24)
akiraasano
PRO
0
130
2025年度春学期 統計学 第1回 イントロダクション (2025. 4. 10)
akiraasano
PRO
0
170
技術文章を書くための執筆技術と実践法(パラグラフライティング)
hisashiishihara
18
6.5k
社外コミュニティと「学び」を考える
alchemy1115
2
170
子どものためのプログラミング道場『CoderDojo』〜法人提携例〜 / Partnership with CoderDojo Japan
coderdojojapan
4
16k
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Optimizing for Happiness
mojombo
379
70k
Scaling GitHub
holman
459
140k
The Language of Interfaces
destraynor
158
25k
Thoughts on Productivity
jonyablonski
69
4.7k
Navigating Team Friction
lara
187
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Stop Working from a Prison Cell
hatefulcrawdad
270
20k
The World Runs on Bad Software
bkeepers
PRO
69
11k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Transcript
by Naoki Kato ©Naoki Kato ©Naoki Kato 数の表現 Computer Science,
Engineering and Literacy
by Naoki Kato © Naoki Kato © Naoki Kato 情報とは
意味 を持つものを広くさす概念 情報
by Naoki Kato © Naoki Kato © Naoki Kato 無形である情報を
記録するには,伝えるには,… 表現しなければならない 表現の方法(表現メディア) 身体表現:発声,身振り,言葉,… 記号表現:文字,数字,記号,数式,表,… パタン表現:絵,図,映像,音楽,… 情報
by Naoki Kato © Naoki Kato © Naoki Kato 情報の記録と伝達
身体表現は 直接伝えることも可 記号・パタン表現は たとえば紙上に 様々な伝達メディアやマスメディアも利用可能 情報
by Naoki Kato © Naoki Kato © Naoki Kato コンピュータで扱えるのは二つの状態
一般的なコンピュータは電気的なスイッチの集合 入力は,電気が流れているか,流れていないか 出力も,電気が流れているか,流れていないか =電圧がかかっているか(H),かかっていないか(L) コンピュータにおける情報の表現 電流を流す 電流を流さない
by Naoki Kato © Naoki Kato © Naoki Kato コンピュータで扱えるのは二つの状態
どんなスイッチ回路も扱える状態は二つの状態 コンピュータにおける情報の表現 X Y S C (⼆進数1桁) HかLか (⼆進数1桁) HかLか 加算結果(1桁⽬) HかLか 加算結果(繰り上がり) HかLか
by Naoki Kato © Naoki Kato © Naoki Kato コンピュータで扱えるのは二つの状態
この二つの状態を 0 と 1 で表現 ビット(bit:binary digit) コンピュータにおける情報の表現
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 種類の状態が表現可能 コンピュータにおける情報の表現 ビット列
by Naoki Kato © Naoki Kato © Naoki Kato 1000本の睡眠薬入りワイン問題
1000本の中に1本だけ睡眠薬が入っています 睡眠薬入りワインを飲むと 10~20分後に寝てしまい,20分は目が覚めません 30分以内にどのワインに睡眠薬が入っているかを 調べるには最小何人必要か? 最小を考えないなら,一番簡単な答えは1000人 誰か1人が寝るので,その人が飲んだワインが答え おまけ
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番 果たして最小人数は??? おまけ
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
by Naoki Kato © Naoki Kato © Naoki Kato コンピュータのマルチメディア化
情報をビット列で表現すると コンピュータに入力(記憶)することができる なんらかの処理をすることができる コンピュータにおける情報の表現 ⽂字や絵図 映像 ⾳楽
by Naoki Kato © Naoki Kato © Naoki Kato 情報の表記
ビット列 01010001 だと長たらしい ビット列 01010001 を二進記数法による数とみなし 十六進記数法 51h を用いて表現することが多い コンピュータにおける情報の表現
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 : : :
by Naoki Kato © Naoki Kato © Naoki Kato コンピュータから情報を出し入れする
コンピュータに情報を入れるには, 情報をビット列(二進記数法の数)に変換する 符号化 コンピュータから情報を出すには, ビット列(二進記数法の数)を情報に戻す 複合化 コンピュータにおける情報の表現
by Naoki Kato © Naoki Kato © Naoki Kato 符号化と複合化
コンピュータにおける情報の表現 東 西 南 北 00 01 10 11 東 西 南 北 符 号 化 複 合 化
by Naoki Kato © Naoki Kato © Naoki Kato 数をビット列で表現する
基本は,単純に,数を二進記数法で表す 数の表現 0010101010001010(2) 2A8A(16)
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ビット長の場合) 数の表現
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) (参考)基数変換 商 余り 余りを逆順に読む
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ビットの場合) 整数の表現
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ビットの場合) 整数の表現
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 整数の表現
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 整数の表現
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 整数の表現
by Naoki Kato © Naoki Kato © Naoki Kato 十進記数法と二進記数法の意味
十進記数法 1 0 9 二進記数法 1 0 1 = 5(10) 実数の表現 102=百が⼀個 101=⼗は無し 100=⼀が九個 22=四が⼀個 21=⼆は無し 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=⼋分の⼀が⼀個
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 実数の表現
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) (参考)基数変換
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・・・ 実数の表現
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 実数の表現 & 丸め誤差
by Naoki Kato © Naoki Kato © Naoki Kato コンピュータによる計算時の問題
∞ Σ2-n を計算したい n=1 無限回数繰り返すことはできないので N 回で打ち切り ∞ Σ2-n 分の誤差が発生 n=N+1 (参考)実数の表現 打ち切り誤差
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の範囲 小数部を使うと,さらに範囲は狭まる より表現範囲を広げたい 浮動小数点 実数の表現
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
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 実数の表現
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おきになる
by Naoki Kato © Naoki Kato © Naoki Kato 浮動小数点による計算時の問題
近い値同士の減算をすると... 1.11111×210 有効桁数6桁 ー)1.11101×210 有効桁数6桁 0.00010×210 =1.0×26 有効桁数2桁 実数の表現 桁落ち
by Naoki Kato © Naoki Kato © Naoki Kato 浮動小数点による計算時の問題
二次方程式の解の公式 で 4ac が限りなく0に近いと 小さい解を求めるとき (限りなくbに近い数値 ‒ b)の計算が発生 桁落ちが発生し,解が不正確に! ※小さい解βは, 1/大きい解αを求めてから で求める 実数の表現 x = −b± b2 − 4ac 2a 1 α c a
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 実数の表現 情報落ち
by Naoki Kato © Naoki Kato © Naoki Kato 実数の誤差を体験してみよう!
実数の表現 0.1 0.1 =IF(A1=B1,"◦","×")
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
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 など現社会で用いられる 基底数が無限小数=有限桁では正確に表現できない! 誤差の少ない数の表現
by Naoki Kato © Naoki Kato © Naoki Kato 10進加算エミュレート
誤差の少ない数の表現
by Naoki Kato © Naoki Kato © Naoki Kato お
おし しま まい い 数の表現