情報量の計算方法と単位 情報量 コンピュータサイエンス入門 第6回 沖縄で雪が降った 宝くじで1等に当選 明日は講師急病で 休講です > 北海道で雪が降った > 宝くじで7等に当選 > 明日はいつもどおり 授業です log 2 log10 10 1 1 log 2 10 ≒ ≒ 3.32 (ビット) 10 log10 2 0.301 アナログ・ディジタル変換 (A/D変換) 標本化 量子化 (サンプリング) log 2 P( E ) 今年は北海道で降雪 ビット(シャノン) log 2 1 0 (ビット) 今年は沖縄で降雪 log 2 > 情報量の計算方法と単位 宝くじで7等当選 情報量= 1 log 2 64 1 log 2 64 6 (ビット) 64 5分の曲を保存するのに何MB必要? 1秒に44100回 サンプリング周波数44.1KHz ビット数/サンプル 量子化ビット数 16bit ⇔モノラル ステレオ 宝くじで1等当選 log 2 log 10 1 7 log 2 107 7 10 ≒ ≒ 23.26 7 10 log10 2 0.301 (ビット) 5分の曲を保存するのに何MB必要? 約53MB 1秒に44100回 サンプリング周波数44.1KHz ビット数/サンプル 量子化ビット数 16bit ⇔モノラル ステレオ 符号化 ランレングス圧縮 文字コード あ → 0001 → 00001001 い → 0010 90 可逆圧縮 AAAAABBBBBAAACDD → 11111001 → 10101 → 113 → A5B5A3C1D2 同じデータが連続するとき効果大 6 3 1 5 4 1 1 2 7 4 6 5 5 7 2 1 ハフマン符号 可逆圧縮 I␣am␣a␣man I ␣ 1110 1111 1100 1101 1110 1111 → 000 001 010 011 001 010 001 011 010 100 1110 10 0 110 10 0 10 110 0 1111 ISO7 (J I S7) 7ビット p r S c s ¥ l | < L - = M ] m } . > N ^ n / ? O _ o ~ EBCDIC 8ビット 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 ␣ & / | < = M ] m } L . > N ^ n / ? O _ o 1100 1101 1110 1111 ~ 8ビット 全角16ビット 0 1 2 3 ␣ C D E F , < p ー タ ! 1 A Q a q ア チ “ 2 B R b 0 @ P ` r イ ツ S c s ウ テ ¥ l | シ フ - = M ] m } ス ヘ . > N ^ n セ ホ / ? O _ o # 3 C { } 0 a j ~ A J 1 b k s B K S c l t C T 3 L UNICODE L ~ * % @ ( ) _ ‘ + ; > = | ┐ ? “ ‘ ¡ ± Á Ñ á ñ 2 B R b r ‚ ’ ¢ ² Â Ò â ò 3 C c s ƒ “ £ ³ Ã Ó ã ó l | Œ œ ¬ ¼ S , < - = M ] m } L . > N ^ n / ? O _ o ~ Ž Ì Ü ì ½ Í Ý í ý ž ® ¾ Î Þ î þ Ÿ ¯ Ï ß Ï ÿ ¿ ü 8ビット 全角16ビット 41 54 30 エスケープ シーケンス 42 30 26 47 2D ソ マ (UCS-2 , UCS-4) 2byte 4byte 2 0 1 2 3 ー タ ミ 。 ア チ ム 43 「 イ ツ メ 41 54 30 88 A4 94 4C 」 ウ テ モ C D E F ヤ シ フ ワ ュ ス ヘ ン 半角未定義のコードを 全角の上位に使う ョ セ ホ ゛ ッ ソ マ “ EUC (拡張UNIXコード) 8ビット 全角16ビット 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 ␣ 0 @ P ‘ p ! 1 A Q a q “ 2 B R b # 3 C S r c s l | ~ < ° À Ð à ð p € 0 ~8 9 A B C D E F 1B 28 4A 43 1B 24 ‘ 1 A Q a q シフトJIS ~ ~ C D E F l , - ~ ~ , s 0 1 2 3 4 5 6 7 ~ B C~F Q a q R b c 0 @ P ~ 1100 1101 1110 1111 ` r S ~ C D E F P R b ISO-2022-JIS 111 ~ 0 1 2 3 000 ~ ␣ 0 @ 0000 ! 1 A 0001 “ 2 B 0010 # 3 C 0011 p ~ n 100 110 ‘ 1111 ~ I 011 10 P Q a q 8ビット ~ 0000 ␣ 0000 ! 0001 “ 0010 # 0011 ~ → 010 出現数順に短いコード を割り当てる 0 ISO-8859-1(Latin-1) 111 ~ m n ␣ m 001 7ビット 000 ~ ␣ 0 @ 0000 ! 1 A 0001 “ 2 B 0010 # 3 C 0011 ~ a a 000 ASC I I コード C D E F コード配置に 自由度がある , < - = M ] m } L . > N ^ n / ? O _ o ~ 文字一覧は 多摩ソフトウエア有限会社様のサイトより http://www.tamasoft.co.jp/ja/general-info/unicode.html 2 述語論理 正規表現 動物(x) 「xは動物である」 死亡(x) 「xは死ぬ」 ∀x(動物(x)→死亡(x)) 動物(スカシカシパン) 死亡(スカシカシパン) 構文図式 <数字>::= 0|1|2|3|…|9 <年2>::=<年号>|<年2><数字> M T S H <年号>::=M|T|S|H 英小文字1文字、数字1文字 <数字>::= 0|1|2|3|…|9 a* <年1>::=<年号><数字><数字> aで始まる文字列 a?? aで始まる3文字の文字列 <年2>::=<年号>|<年2><数字> メタ言語・・・言語のルールを書くための言語 次の規則から生成可能な式は? <式>::=<変数>|( <式>+<式> )|<式>*<式> <変数> ::=A|B|C|D <式>::=<変数>|( <式>+<式> )|<式>*<式> <変数> ::=A|B|C|D 逆ポーランド表記法(後置表記法)で次の式は? 逆ポーランド表記法(後置表記法)で次の式は? 数字 逆ポーランド記法 1 + 2 1 2 + 1 + 2 + 3 1 2 + 3 + (1 [a-z][0-9] 次の規則から生成可能な式は? <年号>::=M|T|S|H BNF ) ( + 2 × 3 + 4 EF-G÷CD-AB+÷+ EF-G÷CD-AB+÷+ ) 1 2 + 3 4 +× 3 逆ポーランド表記法(後置表記法)で次の式は? 245 状態遷移図 EF-G÷CD-AB+÷ + 入出力 処理開始 実行可能 状態 時間切れ 待ち 状態 ① ② ③ 小 00 ↑ 02 03 CPU割当 実行 状態 逐次探索法 二分探索法 ① ③ ② 入出力 処理終了 00 02 03 最大比較回数 最大比較回数 log 2 n 1 ↓ 大 n n n 計算量 アセンブリ言語 機械語(マシン語) 結果を出すまでの手順と繰り返しの最大数 二分探索法 log 2 n 逐次探索法 n 直径nの円を塗りつぶす手順 n 2 01001011 LD 1,TEIHEN 1行づつ対応 11010110 MUL1,TAKASA インタプリタ 0101010111110101 アセンブラ 翻訳 1 N = 3 翻訳 2 K = N + 10 実行 0101010101111101 アセンブルする (翻訳する) インタプリタ型言語 というソフトで 実行 というソフトで 0111110101010101 翻訳 3 PRINT "Hello" 実行 コンパイルの処理工程 機械語(マシン語) 1010111110001111 0101111001010101 0111101101010101 0111110101010101 コンパイラ言語 main(void){ printf("hello,world¥n");} 目的(オブジェクト) 原始(ソース)プログラム プログラム コンパイルする コンパイラ というソフトで (翻訳する) Int a; a = 5; a = 10; Int a; a = 5; a = 10; Int a; a = 5; a = 10; Int a; a = 5; a = 10; 0111101101010101 0111110101010101 Windows 1010111110001111 0101011111110000 翻訳 MacOS 0011110101011110 1011111011110000 翻訳 Linux 1111010101111111 1010111110000000 翻訳 System.out.println ("Hello, world!"); CPUが違えば 機械語も違う OSが違いを吸収するが OS間でもコードが違う 4 手続き型言語 Windows 1010111110001111 0101011111110000 仮想 System.out.println マシン ("Hello, world!"); #include <stdio.h> 仮想 マシン int main(void) { printf("Hello, world!"); return 0; } MacOS 0011110101011110 1011111011110000 Linux 1111010101111111 1010111110000000 関数型言語 仮想 マシン Dsfherimxqoqwe;w e39234jdjdfnlsnjgef 中間コード 論理型言語 オブジェクト指向型言語 親子(舟,サザエ). 親子(サザエ,タラ). ?- 親子(舟,x). x=サザエ. 孫(_祖母,_孫) :親子(_祖母,A), 親子(A,_孫). ?- 孫(舟,Y). Y=タラ. public class Hello { public static void main (String [] args) { System.out.println ("Hello, world!"); } } (format t "Hello, World¥n") (+ 10 20) (setq a 999) (+ a 1 20) (setq b nil) (if nil 0 1) スクリプト言語 #!/usr/bin/perl print "Hello, world!¥n"; print <<"_HTML_"; <body>Hello world</body> _HTML_ マークアップ言語 <顧客> <氏名>山田太郎</氏名> <宛先> <郵便番号>001-0001</郵便番号> <住所>札幌市白石区菊水</住所> </宛先> </顧客> 5
© Copyright 2024 ExpyDoc