基本情報技術概論 (第2回) 数の表現方法 ・ 演算 埼玉大学 理工学研究科 堀山 貴史 1 前回の復習 単位 bit, byte k, M, G, T / m, μ, n n 進数 2進数 0, 1, 10, 11, 100, 101, … 8進数 0, 1, 2, …, 6, 7, 10, 11, 12, … 16進数 0, 1, 2, …, 9, A, B, C, D, E, F, 10, … 基数の変換 2A . 18 (16) … 2 x 16 + 10 x 1 + 1 x 1/16 + 8 / 162 (10) 1011 . 1 (2) … 001 011 . 100 (2) = 1 3 . 4 (8) ________________ 2 前回の復習 (2) 整数 例) 数値の表現方法 0 0 0 1 1 0 0 1 1 9 絶対値表現 1 -1 1の補数 2の補数 1 1 -6 -7 符号なし整数 符号付き整数 最上位ビットを 符号として使う 小数 固定小数点数 浮動小数点数 3 小数の表現方法 ________________ 固定小数点数 小数点の位置を固定 浮動小数点数に比べて、数値表現の範囲が狭い (大きな数、小さな数が扱えない) 例) 1000000 (2) は? 0.00001 (2) は? 演算が容易 最上位ビットを符号とみて、符号付きの数も扱える 4 小数の表現方法 指数部 - 0.1 x 2 11 符号部 仮数部 ________________ 浮動小数点数 符号部 指数部 仮数部 固定小数点数に比べて、数値表現の範囲が広い 例) 1000000 (2) は 0.1 x 2 7 0.00001 (2) は 0.1 x 2 -4 注意: 正規化が必要 仮数部の左端から0が並んでいると、 有効数字が小さくなる。これを防ぐため、 0.1 x 2 ○ という形にする。 5 小数の表現方法 指数部 - 0.1 x 2 11 浮動小数点数 (形式その1) 符号部(S) 指数部(E) 1 bit 7 bit 符号部 仮数部 仮数部(M) 24 bit (-1) S x 0.M x 2 E 符号部 : 仮数部の符号 0:正 1:負 仮数部 : 符号を取り除いた絶対値 正規化 0.1○○○ 指数部 : 正の数も負の数も、ありえる 2の補数表現 6 小数の表現方法 指数部 - 0.1 x 2 11 浮動小数点数 (形式その2) 符号部(S) 指数部(E) 1 bit バイアス127を 加える 8 bit 符号部 仮数部 仮数部(M) 23 bit バイアス127を 引く (-1) S x 1.M x 2 E-127 符号部 : 仮数部の符号 0:正 1:負 仮数部 : 符号を取り除いた絶対値 正規化 1.○○○ 指数部 : 正の数も負の数も、ありえる 指数部にバイアス (127) が加わっている 7 小数の表現方法 指数部 - 0.1 x 2 11 符号部 仮数部 IEEE 浮動小数点数 float 単精度 (4 バイト : 32 ビット) 符号部 指数部 仮数部 1 bit 8 bit 23 bit 倍精度 (8 バイト : 64 ビット) double 符号部 指数部 仮数部 1 bit 11 bit 52 bit 形式その2を使う (倍精度のバイアスは 1023) 8 四則演算 (+, -, ×, ÷) 9 加算 10進数の加算と同様に、下位の桁からの 桁上がり ( キャリー ) を足していく ________________ 例)4 bit 符号なし整数 1 0100 + 0110 101 0 1111 1111 + 0001 1000 0 注意: ________________ オーバーフロー 演算結果が、表現できる数値の範囲より外側に 超えてしまうことがある 10 減算 10進数の加算と同様に、下位の桁からの 桁借り ( ボロー ) を引いていく ________________ 例)4 bit 符号なし整数 1 1010 - 0110 0100 1111 0000 - 0001 ?1111 注意: オーバーフロー 演算結果が、表現できる数値の範囲より外側に 超えてしまうことがある 11 減算 (方法2) 2の補数表現を使って、加算 例) 4 - 1 = 4 + (-1) 11 0100 + 1111 10011 … 4 … -1 … 3 2の補数表現では 無視する 12 2の補数表現の加算 2の補数表現を使って、加算 例) 4 + 4 1 0100 + 0100 1 000 … 4 … +4 … 8? 正+正=負 負+負=正 注意: オーバーフロー 演算結果が、表現できる数値の範囲より外側に 超えてしまうことがある 13 シフト演算 論理シフト ビット列を左や右に移動させる あふれた値は捨てる 空いたところには 0 を入れる 例) 左シフト 右シフト 1 1 0 1 x 1 1 0 1 x 1 0 1 0 0 1 1 0 14 シフト演算 算術シフト 符号ビットを保持する 2の補数表現で、 2倍(左シフト)や 1/2倍(右シフト)に対応 例) 左シフト 0 0 0 1 x … 1 1 1 0 1 x … -3 0 0 1 0 … 2 1 0 1 0 … -6 15 シフト演算 算術シフト 符号ビットを保持する 2の補数表現で、 2倍(左シフト)や 1/2倍(右シフト)に対応 例) 右シフト 0 0 1 0 x … 2 1 0 1 0 x … -6 0 0 0 1 … 1 1 1 0 1 … -3 16 乗除算 シフトと加減算を組み合わせて実現する 1101 x 0101 1101 0000 1101 0000 1000001 0101 … 5 … 13 … 1101 1000011 … 67 … 5 1101 1111 1101 10 … 2 … 65 17 用語: オーバーフロー ________________ 誤差 演算結果が、表現できる数値の範囲より 外側に超えること アンダーフロー ________________ 浮動小数点演算では、オーバーフローの他に アンダーフローも起こりえる 演算結果が、表現できる数値の範囲より 細かな数になること 数値範囲 数直線 オーバーフロー 0 アンダーフロー オーバーフロー 18 用語: 誤差 情報落ち ________________ 浮動小数点演算において、 絶対値の大きな数 と 絶対値の小さな数 の 加減算で、 絶対値の小さな数の有効桁数の一部または全部が 演算結果に反映されないことで生じる 例) 0.10100(2) x 24 – 0.10001(2) x 2-8 桁落ち ________________ 浮動小数点演算において、 値がほぼ等しい数同士の加減算で、 有効桁数が大幅に減ってしまう 意味があるのは この桁のみ 例) 0.10000011 x 24 - 0.10000010 x 24 = 0.10000000 x 2-3 19 用語: 誤差 打切り誤差 ________________ 演算を途中で打ち切ったことで発生する誤差 例) sin x を x – x3/3 ! で計算 (本当は、 x – x3/3 ! + x5/5 ! – x7/7 ! + ・・・ と続く) 丸め誤差 ________________ 最下位桁より小さい部分について、 丸め(四捨五入や切り上げ、切捨て)を 行うことによって生じる誤差 例) 10/3 = 3.333… → 3.3 20 文字の表現方法 文字コード 文字集合(扱う文字の集合)の 符号化方式(どのように2進数を対応させるか)を 定めたもの 21 ASCI I コード ________________ ANS I (American National Standards Institute) で 制定された7ビットのコード 英数字、記号、 制御コードからなる 例) A の文字コード 1000001 22 より多くの文字を取り扱うために ... J________________ I S コード ISO-2022 を符号化方式とした 7ビット 1~2バイトのコード 電子メールのやりとりには、ISO-2022-JP の 符号化方式を用いるのが主流 シフト JIS ________________ J I S コードと同じ文字集合 (8ビット 1~2バイト) 以前の Windows や MacOS では、 内部処理用のコードとして主に利用された (現在でも、ユーザはファイル保存時に使える) 23 より多くの文字を取り扱うために ... EUC (EUC-JP) : 拡張 Unix コード ________________ J I S コードと同じ文字集合 (8ビット 1~2バイト) 主に Unix で用いられる Unicode ________________ 世界中の言語で使う文字を 1つのコード体系に納め(ようとしてい)るコード Window,Mac OS X,Unix 等の最近の OS で 標準的に扱える 符号化方式には、UTF-8 や UTF-16 が用いられる 24 論理演算 25 論理演算 2進数の四則演算 (+, -, ×, ÷) は、 0, 1 を操作すれば実現できる 与えられた 0, 1 (入力) から、 計算結果の 0, 1 (出力) を得る仕組みを作ろう! 26 論理演算 NOT (否定) AND (論理積) OR (論理和) XOR (排他的 論理和) 回路記号 A A B A B A B f 真理値表 A 0 1 f 1 0 B 0 1 0 1 f f A 0 0 1 1 B 0 1 0 1 f f A 0 0 1 1 B 0 1 0 1 f f A 0 0 1 1 0 0 0 1 0 1 1 1 0 1 1 0 論理式 f = A f =¬A f = A・B f = A∧B f = A+B f = A∨B f = A+B 27 論理演算: NAND 論理演算 NOT (否定) AND (論理積) NAND 回路記号 A A B A B f 真理値表 A 0 1 f 1 0 B 0 1 0 1 f f A 0 0 1 1 B 0 1 0 1 f f A 0 0 1 1 0 0 0 1 1 1 1 0 論理式 f = A f =¬A f = A・B f = A∧B f = A・B f = A∧B 28 論理演算: NOR 論理演算 NOT (否定) OR (論理和) NOR 回路記号 A A B A B f 真理値表 A 0 1 f 1 0 B 0 1 0 1 f f A 0 0 1 1 B 0 1 0 1 f f A 0 0 1 1 0 1 1 1 1 0 0 0 論理式 f = A f =¬A f = A+B f = A∨B f = A+B f = A∨B 29 30 31 論理演算: 否定 (NOT) 入力の否定 (0, 1 を反転させる) 入力 出力 A 真理値表 f 回路記号 論理式 A f f = A 0 1 f =¬A 1 0 32 論理演算: 論理積 (AND) A と B どちらも 1 なら、 f も 1 A f B 真理値表 回路記号 論理式 A B f f = A・B 0 0 1 1 0 0 0 1 f = A∧B 0 1 0 1 33 論理演算: 論理和 (OR) A または B が 1 なら、 f も 1 A f B 真理値表 回路記号 論理式 A B f f = A+B 0 0 1 1 0 1 1 1 f = A∨B 0 1 0 1 34 論理演算: 排他的論理和 (XOR, EOR, EXOR) A または B 一方のみが 1 なら、 f も 1 A f B 真理値表 回路記号 A B f 0 0 1 1 0 1 1 0 0 1 0 1 論理式 f = A+B 35 36 37 この教材のご利用について この文面は、TOKYO TECH OCW の利用 条件を参考にしました この教材は、以下に示す利用条件の下で、著作権者にわざわざ許諾を 求めることなく、無償で自由にご利用いただけます。講義、自主学習は もちろん、翻訳、改変、再配布等を含めて自由にご利用ください。 非商業利用に限定 この教材は、翻訳や改変等を加えたものも含めて、著作権者の許 諾を受けずに商業目的で利用することは、許可されていません。 著作権の帰属 この教材および教材中の図の著作権は、次ページ以降に示す著 作者に帰属します。この教材、または翻訳や改変等を加えたもの を公開される場合には、「本教材 (or 本資料) は http://www.al.ics. saitama-u.ac.jp/horiyama/OCW/ の教材です (or 教材を改変したものです」 との旨の著作権表示を明確に実施 してください。なお、この教材に改変等を加えたものの著作権は、 次ページ以降に示す著作者および改変等を加えた方に帰属しま す。 同一条件での頒布・再頒布 この教材、または翻訳や改変等を加えたものを頒布・再頒布する 場合には、頒布・再頒布の形態を問わず、このページの利用条件38 この教材のご利用について 配布場所 http://www.al.ics.saitama-u.ac.jp/horiyama/OCW/ この powerpoint ファイルの著作者 堀山 貴史 2007-2009 [email protected] 改変等を加えられた場合は、お名前等を追加してください 図の著作者 p. 26 クリップアート : Microsoft Office Online / クリップアート その他 堀山 貴史 39
© Copyright 2024 ExpyDoc