m-project コンピュータを作って しまおう - waseda …β は 2 進の小数部分 0.β×...
TRANSCRIPT
コンピュータを作ってしまおう
足し算回路を設計する
M-project
コンピュータを作ってしまおう 1
コンピュータ内ではすべてのものを0と1で表す
文字 → 文字コード
整数 → 固定小数点表示
実数 → 浮動小数点表示 (誤差を伴う)
画像 → 小さな点(ピクセル)の集まり
プログラム → 文字で表された命令を実行順に並べる
コンピュータを作ってしまおう 2
M-project
文字コード文字を0と1で表す約束
いろんな方式がある → ASCCI (半角英数字を表す基本的なもの)
JISコード、シフトJISコード、EUCコード (日本語の文字の表し方)
例 : ASCII では文字を次にように0と1で表す
A → 100 0001 B → 100 0010 ・・・
a → 110 0001 b → 110 0010 ・・・
0 → 011 0000 1 → 011 0001 ・・・
・・・
コンピュータを作ってしまおう 3
M-project
ASCIIコード表
コンピュータを作ってしまおう 4
M-project
IT用語辞典: http://e-words.jp/p/r-ascii.html から引用
数は2進数で表す
0 → 00000000
1 → 00000001 k ビット表現
2 → 00000010 n = bk-12k-1 + bk-22k-2 + ・・・ + b121 + b020
3 → 00000011 bi は 0 か 1
4 → 00000100
・・・
コンピュータを作ってしまおう 5
8 ビット → 実際は32ビットや64ビット
M-project
16進数も役立つ
0 → 0000 0000 → 001 → 0000 0001 → 01
・・・
9 → 0000 1001 → 0910 → 0000 1010 → 0A・・・
15 → 0000 1111 → 0F・・・
コンピュータを作ってしまおう 6
10進数 2進数 16進数
10 → A11 → B12 → C13 → D14 → E15 → F
M-project
整数は固定小数点表示する
符号ビット s と2進数 α
s=0 なら正の数
s=1 なら負の数 → sα の 0 と 1 を反転し、末尾に 1 を足す (2の補数表現)
コンピュータを作ってしまおう 7
s α
M-project
1ビット
実数は浮動小数点表示する
符号ビット s と2進数 α と β
s=0 なら正の数
α は指数部(先頭の 1 ビットは符号を表す)、β は2進の小数部分
0.β×10αを表す
コンピュータを作ってしまおう 8
βs α
M-project
符号ビット 指数部 小数部
2進数の足し算
[0001 1101]2 = [1D]16 = 1×16 + 13 = 29
[0000 1100]2 = [0C]16 = 0×16 + 12 = 12
0001 1101
+ 0000 1100
0010 1001 [29]16 = 2×16 + 9 = 41
コンピュータを作ってしまおう 9
M-project
2の補数
2の補数は0と1を反転して末尾に1を足したもののこと
[0011 0101]2 = [35]16 = 3×16 + 5 = 53
[1100 1010]2 = [CA]16 (1の補数) 0と1を反転する
[1100 1011]2 = [CB]16 (2の補数) 1の補数の末尾に1を足す
元の数とそれの2の補数を足すと0になる(頭に桁上りした1が生じるので、それを捨てる)
0011 0101
+ 1100 1011
10000 0000
コンピュータを作ってしまおう 10
M-project
捨てる
足し算で引き算をする
[0001 1101]2 = [1C]16 = 1×16 + 13 = 29
[0000 0101]2 = [05]16 = 0×16 + 5 = 5
[1111 1010]2 = [FA]16 5の「1の補数」 (0と1を反転する)
[1111 1011]2 = [FB] 16 5の「2の補数」 (末尾に1を足す)
0001 1101
+ 1111 1011
1 0001 1000 [18]16 = 1×16 + 8 = 24
コンピュータを作ってしまおう 11
M-project
捨てる
論理値(真理値)
真理値 論理値
真 true T 1
偽 false F 0
コンピュータを作ってしまおう 12
M-project
論理関数(ブール関数)
否定(not) 論理積(and) 論理和(or) 排他的論理和(xor)
x y ¬x x ∧ y x∨y x ㊉ y
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0
コンピュータを作ってしまおう 13
M-project
2変数の論理関数のすべて
回路を表すときは
¬x → x
x ∧ y → x ・ yx ∨ y → x + y または xyx ㊉ y → x ㊉ y NAND → x | y NOR → x ↓ y
コンピュータを作ってしまおう 14
M-project
回路素子(ゲート)
コンピュータを作ってしまおう 15
M-project
論理式(ブール式)
0 と 1 は論理式 論理定数(論理値)
x, y, ・・・ などは論理式 論理変数(ブール変数)
α と β が論理式なら α も α・β も α+β も論理式
例
(x y + 0) + (y + z) x
コンピュータを作ってしまおう 16
M-project
論理式を表すのに必要なものは・・・
どんな論理式も次の組み合わせだけで表すことができる
(1) 論理否定 ( x ) と論理和 ( x + y )(2) 論理否定 ( x ) と論理積 ( x ・ y )
(3) NAND ( x | y )
(4) NOR ( x ↓ y )
コンピュータを作ってしまおう 17
M-project
論理式の性質
コンピュータを作ってしまおう 18
M-project
足し算は途中で桁上りがある
コンピュータを作ってしまおう 19
M-project
xnxn-1・・・x1 10011001
+ ynyn-1・・・y1 + 10110101zn+1 zn zn-1・・・z1 101001110
桁上り
まず、1ビットの足し算
コンピュータを作ってしまおう 20
M-project
sは x+yのその桁の値となる1ビットcは桁上り
論理式で表すと・・・
コンピュータを作ってしまおう 21
M-project
論理回路にすると・・・
コンピュータを作ってしまおう 22
M-project
桁上りも考慮すると・・・
コンピュータを作ってしまおう 23
M-project
論理式で表すと・・・
コンピュータを作ってしまおう 24
M-project
n ビットの足し算回路
コンピュータを作ってしまおう 25
M-project
回路にすると・・・
コンピュータを作ってしまおう 26
M-project
じゃんけん回路の設計
コンピュータを作ってしまおう 27
M-project
その論理設計は・・・
コンピュータを作ってしまおう 28
M-project
論理式にすると・・・
コンピュータを作ってしまおう 29
M-project
論理回路は・・・
コンピュータを作ってしまおう 30
M-project
実際の足し算回路はもっと高速
コンピュータを作ってしまおう 31
M-project
プレフィックス並列計算回路
実際の足し算回路は桁上りを並列計算して高速化する
コンピュータを作ってしまおう 32
M-project
速さの違い
コンピュータを作ってしまおう 33
M-project
足す数の桁数(ビット数)を 𝑛𝑛 とするとき
• ripple adder (素朴な回路) 𝑛𝑛に比例する時間かかる
• carry look-ahead adder (桁上り先読み並列可算回路) log 𝑛𝑛に比例する時間で計算できる