(合同算術)
https://www.sw.it.aoyama.ac.jp/2019/Math1/lecture13.html
© 2005-20 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 now.
補講について: 補講の内容は期末試験の対象。補講が別の補講とぶつかる場合には今すぐ申し出ること。
By using formula manipulation, show that the Wolfram axiom of Boolean logic (((A⊼B)⊼C)⊼(A⊼((A⊼C)⊼A))=C) is a tautology. For each simplification step, indicate which law(s) you used.
Hints: Simplify the left side to obtain the right side. There should be between 15 and 20 steps.
[Sorry, removed!]
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 an 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 the 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 = 47 = 101111、b0 = 58 = 111010
x | 0 | 1 | 2 | |
ax (sx-1) | 101111 | 010101 | 1000001 | |
bx
(cx-1<<1 ) |
111010 | 1010100 | 0101000 | |
sx
(a0^ b0) |
010101 | 1000001 | 1101001 | = 105 (result) |
cx
(a0& b0) |
101010 | 010100 | 0000000 | = 0 (finished) |
cx<<1 |
1010100 | 0101000 | 00000000 |
a ≡(mod n) b ⇔ a mod n = b mod n ⇔ a = q1n + r ∧ b = q2n + r ∧ 0 ≦ r < n ⇔ a - b = qn
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, Scheme, mathematics, this lecture | Ruby, Python, Perl, 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 | 8 |
---|---|---|---|---|---|---|---|---|---|---|
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 | ||
9 | - | 1 | 5 | - | 7 | 2 | - | 4 | 8 |
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
お願い: 自由記述に必ず良かった点、問題点を具体的に書きましょう
(悪い例: 発音が分かりにくい; 良い例: さ行が濁っているかどうか分かりにくい)