情報数学 I
第十回 (2013年12月13日)
ブール代数とビット毎演算
Martin J. Dürst
http://www.sw.it.aoyama.ac.jp/2013/Math1/lecture10.html
© 2005-13 Martin
J. Dürst 青山学院大学
今週の予定
- これからの予定
- 先週の残りとまとめ
- ブール代数
- ビット毎演算
- 10進数以外の足し算
これからの予定
- 12月20日 (金): 11回目の授業
- 1月10日 (金): 12回目の授業
- 1月14日 (火、補講): 13回目の授業
- 1月17日 (金): 14回目の授業
- 1月24日 (金): 15回目の授業
- 1月28日~2月3日: 期末試験
補講についての注意
先週の残りとまとめ
ブール代数
(boolean algebra)
- 論理演算、集合演算、半順序の「交差点」
- 論理演算、集合演算、一部の半順序の上位概念
- B = (B, 0, 1,
¬, ∧, ∨)
は次の条件でブール代数:
- 0 ∈ B, 1 ∈
B (1 は単位元、0
は零元と言う)
- ¬
はB上の単項演算、∧
と∨は二項演算
- ∧と∨について交換律、結合律と分配率が成立
- a ∈ B の場合に
a∨0 = a,
a∧1 = a
が成立
- a ∈ B の場合に
a∨ ¬a =
1,
a∧¬a =
0 が成立
- 公理はもっと少なめでよいが、複数の決め方が存在
- ブール代数は半順序、束の一種
- 注意: 0、1、∧
など太字のものは代表で、具体的の意味ではない
Example of Boolean Algebra (1): Set Operations
- B is the powerset of a (finite) set U
- 0 is the empty set
- 1 is U
- ¬ is the complementary set operation
- ∧ is set intersection
- ∨ is set
differenceunion
- The (partial) order relation is ⊂ (subset)
Bitwise Operations
- Inside a computer, information is represented as strings of bits.
- Bitwise operations are bitwise logic operations.
- Bitwise not: ¬ is applied to each bit (
~
in C)
- Bitwise and: ∧ is applied to bits in the same position
(
&
in C)
- Bitwise or: ∨ is applied to bits in the same position (
|
in C)
- Bitwise xor: XOR is applied to bits in the same position (
^
in C)
Example of Boolean Algebra (2): Bitwise Operations
- B is the set of all the bit strings of
length n
- 0 is the bit string of length
n with all bits set to 0
- 1 is the bit string of length
n with all bits set to 1
- ¬ is bitwise not
- ∧ is bitwise and
- ∨ is bitwise or
- The (partial) order relation is the conjunction of
the order relation at each bit position
Example of Boolean Algebra (3): Integer Divisibility
- B is formed by taking a set of
n integers and all the multiples that include or exclude each of
the integers
- 0 is 1
- 1 is the product of all the
original n integers
- ¬a is 1/a
- ∧ is the greatest common divisor
(GCD) of the operands
- ∨ is the least common multiple
(LCM) of the operands
- The (partial) order relation is divisibility
The Structure of Boolean Algebras
- The size of a finite boolean algebra is always |B| =
2n
- All boolean algebras have the same structure (an n-dimensional
cube)
(animation
of a 4-dimensional cube)
- All boolean algebras of dimension n are isomorphic
- For all boolean algebras, the same laws apply (they can be proven from
the axioms)
The Magic Garden of George B.
(The Magic Garden of George B. And Other Logic Puzzles, Raymond Smullyan,
Polimetrica, 2007)
- A very special garden: Flowers can change colors every day
- Each flower is either blue or red for a whole day
- For any flowers a and b, there is a flower
c that is red on all and only those days on which a
and b are both blue.
- Any two different flowers a and b have different
colors on at least one day.
- We know that the garden has more than 200 but less than 500 flowers.
- Question 1: How many flowers does the garden have?
- Question 2: What is the minimum of days that the flowers bloom?
- Question 3: Who is George B.?
ブール代数の例の同型
- 部分集合はビット列で表現可能
- 集合の演算は論理演算で表現可能
例: A ∪ B = { x | x ∈
A ∨ x ∈ B}
ビット毎演算の用途
- 集合の表現と演算
- 性質の記述とチェック
- データの細かい操作
(例えばデータ変換やデータ圧縮など)
データ型によって 8 ビット (1 バイト)、16 ビット、32
ビット、64 ビットを同時に実行
他のビット演算
- 左シフト:
- C 言語等で
<<
と書く。
b << n
では b
のビットをそれぞれ n
個左にずらし、右から 0 で埋める。左から n
個のビットは消える。
- オーバフローがない場合
b << n
は
b ×2n
- 右シフト:
- C 言語等で
>>
と書く。
b >> n
では b
のビットをそれぞれ n
個右にずらす。左から0で埋めるか最上位のビットを複写するのかはプログラム言語・データ型・実装による。右から
n 個のビットは消える。
- 左から 0 で埋める場合
b >> n
は
b / 2n
ビットごと演算の応用例
- ビット列 a でマスク m
のビットをセット:
a | m
- ビット列 a でマスク m
のビットを削除:
a & ~m
- ビット列 a でマスク m
のビットを逆転:
a ^ m
- ビット列 a で右から n
番目のビットをセット:
a | (1<<n)
(一番右が 0番目)
- ビット列 a で右から n 番目のビットを削除:
a & ~(1<<n)
(一番右が 0番目)
- ビット列 a で右から n 番目のビットを逆転:
a ^ (1<<n)
(一番右が 0番目)
その他にも多数の応用例 (Hacker's Delight, Henry S. Warren, Jr.,
Addison-Wesley, 2003 参照)
ビット毎演算で足し算
ビットごと演算だけでの足し算
- 入力 a=a0 と
b=b0 から「合計」(sum)
s0 = a0
^
b0 と「繰越」(carry)
c0 = a0 &
b0 を計算
- a1 = s0 と
b1 = c0
<<
1
にし、計算をc が 0 になるまで繰り返す
- 実例: a0 = 1011101、b0 =
1101111
Glossary
- bitwise operation
- ビット毎演算
- bitwise not
- ビット毎否定
- bitwise and
- ビット毎論理積
- bitwise or
- ビット毎論理和
- bitwise xor (exclusive or)
- ビット毎排他的又は
- greatest common divisor
- 最大公約数
- least common multiple
- 最小公倍数
- n-dimensional
- n 次元 (の)
- cube
- 立方体
- isomorphic
- 同型 (の)