PowerPoint プレゼンテーション

基本情報技術概論 (第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