(合同算術)
http://www.sw.it.aoyama.ac.jp/2018/Math1/lecture13.html
© 2005-19 Martin J. Dürst Aoyama Gakuin University
About makeup classes: The material in the makeup class is part of the final exam. If you have another makeup class at the same time, please inform the teacher as soon as possible.
補講について: 補講の内容は期末試験の対象。補講が別の補講とぶつかる場合には事前に申し出ること。
Draw the Hasse diagram of a Boolean algebra of order 4 (16 elements). There will be a deduction if you use the same elements of the group as another student.
Solution: For example, see handout of last lecture
(hierarchy of objects)
Operations work on 8, 16, 32, 64 or more bits concurrently
b << n
in C and many other programming
languagesb
by n
positions
to the left (more significant direction)n
bits on the right are set to 0n
bits in b
disappearb << n
is equivalent to b
×2n89 << 5
⇒ 2848
)b >> n
in C and many other programming
languagesb
by n
positions
to the right (less significant direction)n
bits on the left are set to 0 or to the value of the
leftmost bit in b
, depending on programming lanugage and
data typen
bits in b
disappearb >> n
is equivalent to b /
2n (integer division)89 >> 3
⇒ 11
)a |= m
a &= ~m
a ^= m
a |= (1<<n)
(rightmost bit is number 0)a &= ~(1<<n)
(rightmost bit is number 0)a ^= (1<<n)
(rightmost bit is number 0)For many more advanced examples, see Hacker's Delight, Henry S. Warren, Jr., Addison-Wesley, 2003
Works the same as in decimal system:
Example (base 7):
Operand 1 | 3 | 6 | 5 | 1 | 2 | |
Operand 2 | 6 | 0 | 3 | 3 | 4 | |
carry | 1 | 1 | 1 | |||
sum in base 10 | 1 | 10 | 7 | 8 | 4 | 6 |
sum in base 7 | 1 | 13 | 10 | 11 | 4 | 6 |
Result | 1 | 3 | 0 | 1 | 4 | 6 |
0 | 1 | |
---|---|---|
0 | 0 | 1 |
1 | 1 | 10 |
^
b0,&
b0<<
1, repeat until c=0Example: a0 = 46 = 101110、b0 = 58 = 111010
x | 0 | 1 | 2 | |
ax (sx-1) | 101110 | 010100 | 1000000 | |
bx (cx-1<<1) | 111010 | 1010100 | 0101000 | |
sx
(a0^ b0) |
010100 | 1000000 | 1101000 | = 104 (result) |
cx
(a0& b0) |
101010 | 010100 | 0000000 | = 0 (finished) |
cx<<1 |
1010100 | 0101000 | 00000000 |
a ≡(mod n) b ⇔ a - b = qn ⇔ a = q1n + r ∧ b = q2n + r ∧ 0 ≦ r < n
Reason: a ≡(mod n) a mod n, and so on
Where to use: a and c may be very large numbers, but a mod n and c mod n may be much smaller, so calculation becomes easier.
%
(C, Ruby and many other programming languages),
mod (Mathematics)remainder for negative operands | |||||||
---|---|---|---|---|---|---|---|
operands | always non-negative | same sign as divisor | same sign as dividend | ||||
a (dividend) | n (divisor) | q (a/n) | r (a%n) | q (a/n) | r (a%n) | q (a/n) | r (a%n) |
11 | 7 | 1 | 4 | 1 | 4 | 1 | 4 |
-11 | 7 | -2 | 3 | -2 | 3 | -1 | -4 |
11 | -7 | -1 | 4 | -2 | -3 | -1 | 4 |
-11 | -7 | 2 | 3 | 1 | -4 | 1 | -4 |
Programming languages,... | Pascal, mathematics, this lecture | Ruby, Python, Perl, MS Excel | C (ISO 1999), Java, JavaScript, PHP |
See English Wikipedia article on Modulo Operation
Output some data, three items on a line.
A simple way:
int items = 0; for (i=0; i<count; i++) { /* print out data[i] */ items++; if (items==3) { printf("\n"); items = 0; } }
Using the modulo operation:
for (i=0; i<count; i++) { /* print out data[i] */ if (i%3 == 2) printf("\n"); }
* mod 5 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
1 | 1 | 2 | 3 | 4 |
2 | 2 | 4 | 1 | 3 |
3 | 3 | 1 | 4 | 2 |
4 | 4 | 3 | 2 | 1 |
Division and inverse for rationals: a/b = c ⇔ a·1/b = a b-1 = c
Condition for (multiplicative) inverse b-1: b b-1 = 1
Condition for modular multiplicative inverse: bb-1 ≡ 1
n | b | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|---|
2 | - | 1 | |||||||
3 | - | 1 | 2 | ||||||
4 | - | 1 | - | 3 | |||||
5 | - | 1 | 3 | 2 | 4 | ||||
6 | - | 1 | - | - | - | 5 | |||
7 | - | 1 | 4 | 5 | 2 | 3 | 6 | ||
8 | - | 1 | - | 3 | - | 5 | - | 7 |
The modular multiplicative inverse is only defined if n and b are coprime (i.e. GCD(n, b) = 1)
Various methods to calculate, very time-consuming
a/b (mod n) is defined as a b-1 (mod n)
Example:
3/4 (mod 7) = 3 · 4-1 (mod 7) = 3 · 2 (mod 7) = 6
(Check: 6 · 4 (mod 7) = 24 (mod 7) = 3)
Example: 216 mod 29 = ?
216 = 25 · 25 · 25 · 2
216 = 25 · 25 · 25 · 2 = 32 · 32 · 32 · 2 ≡(mod 29) 3 · 3 · 3 · 2 = 54 ≡(mod 29) 25
318 mod 7 = ?
318 = (33)6 = 276 ≡(mod 7) (-1)6 = 1
4110 mod 37 = ?
4110 ≡(mod 37) 410 = 220 = 324 ≡(mod 37) (-5)4 = 252 ≡(mod 37) (-12)2 = (6 · 2)2 = 36 · 4 ≡(mod 37) (-1) · 4 = -4 ≡(mod 37) 33
Prepare for final exam
(授業改善のための学生アンケート)
WEB Survey
お願い: 自由記述に必ず良かった点、問題点を具体的に書きましょう
(悪い例: 発音が分かりにくい; 良い例: さ行が濁っているかどうか分かりにくい)