情報の単位 2進数 補数 (complement) (1/3)

計算機基礎2008
情報の単位
„
„
„
bit: 0か1, 2進数の1桁
byte: 8 [bit]
word: 最小の情報単位 (CPUのレジスタの
自然長)
„
16-bit machine: 2 [byte]
32-bit machine: 4 [byte]
„
64bit machine: 8 [byte]
„
„
half word: 2 [byte]
2進数
„
„
2を基数とした数の表現
例
„
„
01011101 (8-bitの2進数)
0 x 27 + 1 x 26 + 0 x 25 + 1 x 24 + 1 x 23 +
1 x 22 + 0 x 21 + 1 x 20 = 93 (10進数)
補数 (complement) (1/3)
„
„
ある数から別の数を引いた結果得られる数
基数のべき数からある数を引いたものがそ
の補数
1
計算機基礎2008
補数 (complement) (2/3)
例1 (10進法の10の補数)
„
„
„
„
103= 1000
ある数 256
補数 744
例2 (2進法の2の補数)
„
„
„
„
24 = 10000
ある数 0101
補数 1011
補数 (complement) (3/3)
„
„
基数のべき数より1だけ少ない数から引い
た値を「基数マイナス1の補数」と言う。
例 (2進法の1の補数)
„
„
„
24 = 10000 - 1 = 1111
ある数
0101
補数
1010
マイナスの表現 (1/2)
„
1の補数
„
„
„
例 (4bitの2進数の場合)
„
„
„
作り方:全bit反転
最上位ビット:MSB (Most Significant Bit)が符
号ビット
5 (10進数) = 0101 (2進数)
-5 (10進数) = 1010 (2進数)
ほとんど使用されない
2
計算機基礎2008
マイナスの表現 (2/2)
„
2の補数
„
„
„
作り方:全bit反転 + 1
最上位ビット:MSB (Most Significant Bit)が符
号ビット
ほとんどのコンピュータ上で使用
例題1
„
4bitの2進数の場合
5 (10進数) = 0101
-5 (10進数) = 1010 (bit反転) + 1 = 1011
5 + (-5) = 0101 + 1011 = 10000 (桁上が
りして5bitに) = 0000 (4bit) = 0(10進数)
3 - 4 = 3 + (-4) = 0011 + 1100 = 1111 =
-1(10進数)
„
„
„
„
16進数 (1/2)
„
16を基数とした数の表現
„
„
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 1a, 1b, 1c,
1d, 1e, 1f, 20, 21, ...
例
„
„
„
5d
5 x 161 + d x 160 (16進数) = 5 x 16 + 13 x 1
= 93 (10進数)
01011101 (8-bitの2進数)
3
計算機基礎2008
16進数 (2/2)
„
表記法:前に0xを付けるか後ろにhを付ける
„
„
„
0x5d
5dh
2進数を4bitずつ区切れば容易に16進数に
変換
„
01011101 = 0101_1101 = 0x5d
整数
„
符号無整数: unsigned integer
„
„
„
MSBを符号ビットとして使用しない整数
0 ~ 2n - 1
符号付整数: signed integer
„
„
MSBを符号ビットとして使用する整数
-2n-1 ~ 2n-1 - 1
表現できる数の範囲 (1/3)
„
8-bit
„
unsigned integer
„
„
„
„
0~255
0~28-1
0x00~0xFF
signed integer
„
„
-128~127
-27~27-1
„
„
„
„
„
„
127
1
0
-1
-127
-128
= 0111_1111 =
= 0000_0001 =
= 0000_0000 =
= 1111_1111 =
= 1000_0001 =
= 1000_0000 =
0x7F
0x01
0x00
0xFF
0x81
0x80
4
計算機基礎2008
表現できる数の範囲 (2/3)
„
16-bit
„
unsigned integer
„
„
„
„
0~65535
0~216-1
0~0xFFFF
signed integer
„
„
-32768~32767
-215~215-1
„
„
„
„
„
„
32767
1
0
-1
-32767
-32768
= 0111_1111_1111_1111 = 0x7FFF
= 0000_0000_0000_0001 = 0x0001
= 0000_0000_0000_0000 = 0x0000
= 1111_1111_1111_1111 = 0xFFFF
= 1000_0000_0000_0001 = 0x8001
= 1000_0000_0000_0000 = 0x8000
表現できる数の範囲 (3/3)
„
32-bit
„
unsigned integer
„
„
„
„
0~4294967295
0~232-1
0x0000_0000~0xFFFF_FFFF
signed integer
„
„
-2147483648~2147483647
-231~231-1
ブール代数の概要
„
„
„
„
英国のGeorge Booleが1847年に提案
1と0の2値のみが取り扱われる
1と0は論理学の真(true)と偽(false)に対応
コンピュータ内では電圧のHigh(H)とLow(L)
ンピ
タ内では電圧のHi h(H)とL (L)
に対応
5
計算機基礎2008
論理回路
„
„
„
ゲート:入力論理条件に従い1(H)か0(L)の
信号を生成するハードウェア
各ゲートに対する2進変数の入出力関係
は真理値表(truth table)で表現
基本論理ゲート:1~2の入力変数A,Bと出
力変数Cから構成
ANDゲート
論理積 (logical product)
„ C = A・B
„
A
B
C
0
0
0
0
1
0
1
0
0
1
1
1
A
B
C
ANDゲートのMIL記号
ANDの真理値表
ORゲート
論理和 (logical sum)
„ C = A + B
„
A
B
C
0
0
0
0
1
1
1
0
1
1
1
1
A
B
C
ORゲートのMIL記号
ORの真理値表
6
計算機基礎2008
NOTゲート (Inverter)
論理否定 (logical negation)
„ C = A
„
A
C
0
1
1
0
A
NOTの真理値表
C
NOTゲートのMIL記号
NANDゲート
„
C = A・B
A
B
C
0
0
1
0
1
1
1
0
1
1
1
0
A
B
C
NANDゲートのMIL記号
NANDの真理値表
NORゲート
„
C=A+B
A
B
C
0
0
1
0
1
0
1
0
0
1
1
0
A
B
C
NORゲートのMIL記号
NORの真理値表
7
計算機基礎2008
XORゲート
„
+ B
C=A○
A
B
C
0
0
0
0
1
1
1
0
1
1
1
0
A
B
C
XORゲートのMIL記号
XORの真理値表
ブール代数の基本動作
„
„
„
論理積 (AND)
論理和 (OR)
論理否定 (NOT)
論理関数
„
„
論理関数はANDやORなどの基本論理
ゲートで構成される論理回路に変換可能
真理値表:n個の論理変数があれば2n個
の組み合わせ
8
計算機基礎2008
例題2
„
論理関数F = A・B + Cに関して以下を作
成しなさい。
„
„
真理値表
AND,, OR,, NOTを用いた回路図
例題2 解答
„
A
0
0
0
0
1
1
1
1
F = A・B + C
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
F
0
1
1
1
0
1
0
1
A
B
C
F
9