情報数学 I

第十回: ブール代数と 2進数とビット毎演算

Martin J. Dürst

duerst@it.aoyama.ac.jp

O 棟 529号室

http://www.sw.it.aoyama.ac.jp/2007/Math1/lecture10.html

AGU

© 2005-7 Martin J. Dürst 青山学院大学

今週の予定

先週のまとめ

修正: 順序関係の表現: ハッセ図

有向グラフからハッセ (Hasse) 図への変換:

  1. グラフを矢が全て紙面の下辺に向けるように配置
  2. 反射的矢印を省略
  3. 推移的閉包で復元可能な矢印を省略
  4. 矢印の頭の部分を省略

宿題: 上記 1. から 4. の前後関係からハッセ図を作る

前後関係の定義

a < b: タスク a はタスク b より前に実行しないといけない

a = b: タスク a はタスク b と同時に実行しないといけない

a ? b (関係無し): タスク a とタスク b の間に前後関係がない

半順序関係: ≦

ブール代数の例 (1): 集合演算

ビット毎演算

ブール代数の例 (2): ビット毎演算

ブール代数の例 (3)

有限ブール代数の構造

ブール代数の同型

2 進数と 16 進数の対応

10 2 8 16
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F
16 10000 20 10

数の表現: 10進法

205 = 2×102 + 0×101 + 5×100

34.56 = 3×101 + 4×100 + 5×10-1 + 6×10-2

数の表現: 2進法

1010011 = 1×26 + 0×25 + 1×24 + 0×23 + 0×22 + 1×21 + 1×20 =

数の表現: 16進法

1AF = 1×162 +A×161 +F×160 =

16進数の桁の値
桁 (大文字) 桁 (小文字) 値 (10進数で)
A a 10
B b 11
C c 12
D d 13
E e 14
F f 15

2 の何乗

n 2n 16 進数
0 1 1
1 2 2
2 4 4
3 8 8
4 16 10
5 32 20
6 64 40
7 128 80
8 256 100
9 512 200
10 1024 ≈103 (kilo) 400
11 2048 800
12 4096 1000
16 65536 10000
20 1048576 ≈ 106 (mega) 100000
30 1073741824 ≈ 109 (giga) 40000000
40 1099511627776 ≈ 1012 (tera) 10000000000

基数変換

n 進数から 10 進数: それぞれの桁の値と桁の重みの積の和

10 進数から n 進数:

23 = 11×21 + 1×20 = 5×22 + 1×21 + 1×20 = 2×23 + 1×22 + 1×21 + 1×20 = 1×24 + 0×23 + 1×22 + 1×21 + 1×20 = 10111

余り 結果の回の桁
23 11 1 1
11 5 1 11
5 2 1 111
2 1 0 0111
1 0 1 10111

変換したい数を最初の商にして、繰り返し商を n で割って、余りを最下位の桁にする

n 進数から m 進数:

情報テクノロジーでよく使う基数

基数 英語と略 (形容詞) 用途、使用理由 定数の書き方
2 binary, bin 論理と回路の基本 0b101100 (Ruby 等一部限定)
8 octal, oct 2 進数の短縮、最近使用が少ない 024570 (C 等多くの言語)
10 decimal, dec 人間用 1234567 (全ての言語)
16 hexadecimal, hex 2 進数の短縮、1 バイト (8 ビット) を2 桁で表現可能 0xA3b5 (C 等多くの言語)

冗談の宿題

Q: Why do computer scientist always think Christmas and Halloween are the same ?

質問: なぜ情報テクノロジーの専門家はクリスマスとハロウィーンをいつも誤解するか。

もう一つの冗談

質問: 情報テクノロジーで還暦は何歳か。

よく使われるビット毎演算

データ型によって 8 ビット (1 バイト)、16 ビット、32 ビット、64 ビット

ビット毎演算の用途:

他のビット演算

ビット毎演算で足し算

一桁の足し算
0 1
0 0 1
1 1 10