Binary! Modular arithme c

9/10/15 Binary! 1209[10] = 1×103 + 2×102 + 0×101 + 9×100 100101[2] = 1×25 + 0×24 + 0×23 + 1×22 + 0×21 + 1×20 (bn-­‐1bn-­‐2…b1b0)[2] = bn-­‐1×2n-­‐1 + bn-­‐2×2n-­‐2 + … + b2×22 + b1×21 + b0×20 = 2×(bn-­‐1×2n-­‐2 + bn-­‐2×2n-­‐3 + … + b2×21 + b1×20) + b0 = 2×(2×(bn-­‐1×2n-­‐3 + bn-­‐2×2n-­‐4 + … + b2×20) + b1) + b0 = 2×(2×(2×(…(2×bn-­‐1 + bn-­‐2)+ …) + b2) + b1) + b0 Modular arithmeDc 11 1 1
01101010
+ 10101010
100010100
(106)
(170)
(276)
01101010
x 10101010
00000000
01101010
00000000
01101010
00000000
01101010
00000000
+ 01101010
100011001100100
(106)
(170)
(18020)
1 9/10/15 Modular arithmeDc 11 1 1
01101010
+ 10101010
100010100
(106)
(170)
(276)
00010100
(20)
01101010
x 10101010
00000000
01101010
00000000
01101010
00000000
01101010
00000000
+ 01101010
100011001100100
(106)
(170)
01100100
(100)
(18020)
0000
1111
0001
1110
0010
1101
0011
1100
0100
1011
0101
1010
0110
1001
0111
1000
2 9/10/15 0000
1111
15 1110
0 14 1 13 1101
3 0011
5 0100
0101
6 10 1010
0010
4 11 1011
2 Unsigned 12 1100
0001
9 1001
8 7 0110
0111
1000
0000
1111
1110
14 -­‐2 1011
0001
17 1 13 -­‐3 1101
1100
15 -­‐1 16 0 Unsigned 12 -­‐4 4 0100
-­‐12 5 -­‐11 0101
11 -­‐5 1010
0010
18… 2 …-­‐14 3 0011
-­‐13 10 -­‐6 9 -­‐7 1001
8 -­‐8 7 -­‐9 6 -­‐10 0110
0111
1000
3 9/10/15 0000
1111
1110
14 -­‐2 15 -­‐1 16 0 0001
17 1 13 -­‐3 1101
4 0100
-­‐12 12 -­‐4 1100
5 -­‐11 0101
11 -­‐5 1011
10 -­‐6 1010
0010
18… 2 …-­‐14 3 0011
-­‐13 9 -­‐7 1001
8 -­‐8 7 -­‐9 6 -­‐10 0110
0111
1000
0000
1111
1110
14 -­‐2 1011
0001
17 1 13 -­‐3 1101
1100
15 -­‐1 16 0 4 0100
-­‐12 12 -­‐4 5 -­‐11 0101
11 -­‐5 1010
0010
18… 2 …-­‐14 3 0011
-­‐13 10 -­‐6 9 -­‐7 1001
8 -­‐8 7 -­‐9 6 -­‐10 0110
0111
1000
4 9/10/15 0000
1111
1110
14 -­‐2 15 -­‐1 16 0 0001
17 1 13 -­‐3 1101
4 0100
-­‐12 12 -­‐4 1100
5 -­‐11 0101
11 -­‐5 1011
10 -­‐6 1010
0010
18… 2 …-­‐14 3 0011
-­‐13 9 -­‐7 1001
8 -­‐8 7 -­‐9 6 -­‐10 0110
0111
1000
0000
1111
1110
14 -­‐2 1011
0001
17 1 13 -­‐3 1101
1100
15 -­‐1 16 0 Two’s Complement 12 -­‐4 11 -­‐5 1010
10 -­‐6 9 -­‐7 1001
8 -­‐8 7 -­‐9 0010
18… 2 …-­‐14 3 0011
-­‐13 4 0100
-­‐12 5 -­‐11 0101
6 -­‐10 0110
0111
1000
5 9/10/15 Addi>ve inverse: -x
0000
1111
0001
1110
0010
1101
0011
1100
0100
1011
0101
1010
-x + x = 0_
0110
1001
0111
1000
0000
Bitwise nega>on: ~x 1111
0001
1110
0010
1101
0011
1100
0100
1011
0101
1010
~x + x = -1
~x | x = -1
0110
1001
0111
1000
6 9/10/15 Addi>ve inverse: -x
Bitwise nega>on: ~x 1111
0000
0001
1110
0010
1101
0011
1100
0100
1011
0101
1010
~x + x = -1
~x + 1 = -x
0110
1001
0111
1000
Hexadecimal (base 16) • 
• 
• 
• 
• 
• 
• 
• 
0[16] 1[16] 2[16] 3[16] 4[16] 5[16] 6[16] 7[16] 0000[2]
0001[2]
0010[2]
0011[2]
0100[2]
0101[2]
0110[2]
0111[2]
0[10] 1[10] 2[10] 3[10] 4[10] 5[10] 6[10] 7[10] • 
• 
• 
• 
• 
• 
• 
• 
8[16] 9[16] A[16] B[16] C[16] D[16] E[16] F[16] 1000[2]
1001[2]
1010[2]
1011[2]
1100[2]
1101[2]
1110[2]
1111[2]
8[10] 9[10] 10[10] 11[10] 12[10] 13[10] 14[10] 15[10] 7 9/10/15 Hexadecimal 0*16
12*16
192*16
3087*16
49402*16
790444*16
+
+
+
+
+
+
C
0
F
A
C
E
=
=
=
=
=
=
12
192
3087
49402
790444
12647119
Hexadecimal 0*16
12*16
192*16
3087*16
49402*16
790444*16
+
+
+
+
+
+
C
0
F
A
C
E
=
=
=
=
=
=
12
192
3087
49402
790444
12647119
--> 0xC0FACE
12647118 (int)
--> int2hex(12647118);
"00C0FACE" (string)
8