by Naoki Kato©Naoki Kato©Naoki Kato数の表現ComputerScience, Engineering and Literacy
View Slide
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コンピュータで扱えるのは二つの状態どんなスイッチ回路も扱える状態は二つの状態コンピュータにおける情報の表現XYSCHかLかHかLか HかLかHかLかDLDCKDLDCKD0D1CKLDHか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, 111N 個のビットを組み合わせると2N 種類の状態が表現可能コンピュータにおける情報の表現ビット列
by Naoki Kato© Naoki Kato© Naoki Katoコンピュータのマルチメディア化情報をビット列で表現するとコンピュータに入力(記憶)することができるなんらかの処理をすることができるコンピュータにおける情報の表現⽂字や絵図 映像⾳楽
by Naoki Kato© Naoki Kato© Naoki Kato情報の表記ビット列 01010001 だと長たらしいビット列 01010001 を二進記数法による数とみなし十六進記数法 51h を用いて表現することが多いコンピュータにおける情報の表現
by Naoki Kato© Naoki Kato© Naoki Kato2進記数法と10進記数法と16進記数法数(参考)基数変換00000000 0 0h00000001 1 1h00000010 2 2h00000011 3 3h: : :00001010 10 0ah: : :00001111 15 0fh00010000 16 10h: : :
by Naoki Kato© Naoki Kato© Naoki Katoコンピュータから情報を出し入れするコンピュータに情報を入れるには,情報をビット列(二進記数法の数)に変換する符号化コンピュータから情報を出すには,ビット列(二進記数法の数)を情報に戻す複合化コンピュータにおける情報の表現
by Naoki Kato© Naoki Kato© Naoki Kato符号化と複合化コンピュータにおける情報の表現東西南北00011011東西南北符号化複合化
by Naoki Kato© Naoki Kato© Naoki Kato数をビット列で表現する基本は,単純に,数を二進記数法で表す数の表現0010101010001010(2)2A8A(16)
by Naoki Kato© Naoki Kato© Naoki Kato自然数と0の符号化そのまま二進表記法を利用0 00000000 10 000010101 00000001 11 000010112 00000010 12 000011003 00000011 13 000011014 00000100 14 000011105 00000101 15 000011116 00000110 16 000100007 00000111 17 000100018 00001000 18 000100109 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 Kato1の補数負の整数は,全ビットを反転させる(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 Kato2の補数負の整数は,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固定小数点b1b0.b-1b-2= b1×21+b0×20+b-1×2-1+b-2×2-2(4 ビット,小数点部 2 ビットの場合)0000 = 00001 = 0.25 1111 = ー0.250010 = 0.5 1110 = ー0.50011 = 0.75 1101 = ー0.750100 = 1 1100 = ー10101 = 1.25 1011 = ー1.250110 = 1.5 1010 = ー1.50111 = 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.01011/3 + 1/3 + 1/3 =?0.01010.0101+)0.01010.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) -238ビットの場合,127~-12832ビットでも,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-4990-001×10-499 ~ -999×10500実数の表現999〜0を500〜-499に
by Naoki Kato© Naoki Kato© Naoki Kato浮動小数点の特徴 (◯.◯×10◯)実数の表現0.0 1.0×1000.1×101 1.0×1010.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 − 4ac2a1αca
by Naoki Kato© Naoki Kato© Naoki Kato浮動小数点による計算時の問題絶対値が大きく異なる値の加減算を行うと64(10)+0.125(10)を有効桁数6桁の2進数で計算すると1.00000×26+)1.00000×201.00000×26+)0.000001×261.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-13520.10.20.33=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 00001 00012 00103 0011 12→0001 00104 01005 01016 01107 01118 10009 1001誤差の少ない数の表現
by Naoki Kato© Naoki Kato© Naoki Kato十進計算のシミュレート12→0001 0010+ 9→0000 10010001 00010001001021←00001100 00000011誤差の少ない数の表現2+9は111+0は11+1は2
by Naoki Kato© Naoki Kato© Naoki Katoおおししままいい数の表現