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
2
620
コンピュータによる数の表現
Naoki Kato
PRO
April 26, 2023
Tweet
Share
More Decks by Naoki Kato
See All by Naoki Kato
GIGAスクール構想定着期に向けて
naokikato
PRO
0
42
授業や家庭における効果的なICTの活用
naokikato
PRO
0
72
プログラミング教育実践に向けて
naokikato
PRO
0
52
GIGAスクール時代の情報教育とICT活用
naokikato
PRO
0
47
プログラミング教育の意義~12年間の学びの継続性~
naokikato
PRO
0
140
まとめとして
naokikato
PRO
0
48
動くプログラミング
naokikato
PRO
0
54
ICT活用による授業改善
naokikato
PRO
0
110
コンピュータによる文字の表現
naokikato
PRO
1
100
Other Decks in Education
See All in Education
Microsoft Office 365
matleenalaakso
0
1.5k
第33回 JAWS-UG札幌 クラウド女子会コラボ 勉強会
nagisa53
2
340
Ch5_-_Partie_3.pdf
bernhardsvt
0
150
Human Perception and Colour Theory - Lecture 2 - Information Visualisation (4019538FNR)
signer
PRO
0
1.7k
Data Representation - Lecture 3 - Information Visualisation (4019538FNR)
signer
PRO
1
1.7k
生成AIを活用できる大学教職員になる-基本と実践-
gmoriki
0
170
2023年度桜井政成ゼミ資料_論文の探し方・読み方
masanari
6
2.1k
TCA Practice in 5 min
d_date
1
480
WordPressを教える人のための視点と考え方
crebowinfo
0
210
Pen-based Interaction - Lecture 4 - Next Generation User Interfaces (4018166FNR)
signer
PRO
0
1.2k
H5P-työkalut
matleenalaakso
3
32k
Data Processing and Visualisation Frameworks - Lecture 6 - Information Visualisation (4019538FNR)
signer
PRO
1
1.7k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
57
3.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
644
57k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
242
20k
Building Flexible Design Systems
yeseniaperezcruz
317
37k
Faster Mobile Websites
deanohume
296
30k
GraphQLとの向き合い方2022年版
quramy
28
12k
Rails Girls Zürich Keynote
gr2m
91
13k
Building an army of robots
kneath
300
41k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
8
8.2k
Agile that works and the tools we love
rasmusluckow
323
20k
The Mythical Team-Month
searls
214
42k
Stop Working from a Prison Cell
hatefulcrawdad
265
19k
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 HかLか HかLか HかLか HかLか D LD CK D LD CK D0 D1 CK LD 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 コンピュータのマルチメディア化
情報をビット列で表現すると コンピュータに入力(記憶)することができる なんらかの処理をすることができる コンピュータにおける情報の表現 ⽂字や絵図 映像 ⾳楽
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 整数の符号化
負の整数をどうするかがポイント 符号-仮数部 最上位ビットを符号とする +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 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ビットの場合) 整数の表現
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 実数の表現 負は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 = 1/4+1/16+・・・ 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 浮動小数点
符号部,指数部,仮数部で表現 実数の絶対値 = 仮数部×基数指数部 0101110 = +0.110×2101 = +0.75×22 = +3.0 (符号部1ビット+指数部3ビット+仮数部3ビット) 実数の表現
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 に
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)
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 実数の符号化
浮動小数点 桁落ち,情報落ち 丸め誤差と打ち切り誤差もある 固定小数点に比べ, 扱える絶対値の範囲は増えるが,精度は落ちる 計算処理も複雑=速度も遅い 利用する数値の範囲が限られ, 精度が求められる計算には固定小数点が使われる 実数の表現
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 =1305-1352 0.1 0.2 0.3 3 =130.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 二進化十進表現
(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 誤差の少ない数の表現
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
by Naoki Kato © Naoki Kato © Naoki Kato お
おし しま まい い 数の表現