<<

ENGI1006 PYTHON Summer 2021

1 Systems

2 OTHER NUMBER SYSTEMS

• The western scientifc world relies on , or base 10

• as did the Ancient Egyptians, Incans, Greeks, Romans

• Mayans used vegisimal, or base 20

• The Babylonians used , or base 60

• http://mentalfoss.com/article/31879/12-mind-blowing- number-systems-other-languages

3 SYSTEMS

• All modern digital devices rely on a simple scheme, intimately tied to transistors:

• 1 - On

• 0 - Off

4 BINARY NUMBER SYSTEMS

• We call this base 2 number a

• 8 form a

• Use Greek prefxes, but in base 2

• Kilobyte is ~1000 , but is actually 2^10 bytes (1024 bytes)

• Sometimes different prefxes are used (kibi vs kilo)

5 CONVERTING TO BINARY

• We start by formalizing our understanding of decimal, or “base 10”

• The digits of a number are multipliers for the powers of our base

6 CONVERTING TO BINARY

• Thus, we can express a base 10 number as powers of 10

• 10,436 = 1*104 + 0*103 + 4*102 + 3*101+ 6*100

• Thus, in any other base, a number is composed of digits between 0 and (base - 1), powers of the base

7 CONVERTING TO BINARY

• So in binary

• 10110 = 1*24 + 0*23 + 1*22 + 1*21 + 0*20 = 22 in decimal

• Or in (base 8)

• 75 in octal = 7*81 + 5*80 = 61 in decimal

8 CONVERTING TO BINARY

• These operations are nature to us in decimal, which can often make them confusing in other bases

9 CONVERTING TO BINARY

• Converting a decimal number to a different base is a little bit harder

• Luckily, there is a straightforward process (or algorithm, a term we will defne later) for doing so

• Given a number in decimal, if we divide repeatedly by a given base with remainder, the remainders will correspond to the digits in that base

10 CONVERTING TO BINARY

• 1234 = 1*103 + 2*102 + 3*101 + 4*100

• = (1*103 + 2*102 + 3*101) + 4

• if we divide by 10 with remainder, its clear the remainder is 4, and the result is

• 1*102 + 2*101 + 3*100 = (1*102 + 2*101) + 3

11 CONVERTING TO BINARY

• Repeating the process until the is 0 will yield me back the digits

• Since my choice of base 10 was arbitrary, I can do the same for any other base, I.e.

• 1234 = 1*103 + 2*102 + 3*101 + 4*100

• = Bn*2n + … + B0*20

• A slightly more mathematical explanation is here

12 CONVERTING TO BINARY

• Let’s look at a few examples on the board

13 OTHER NUMBER SYSTEMS

• Occasionally, we will use octal (base 8)

• We sometimes use a (base 16) system to represent whole bytes with less data

• i.e., (10101111)2 can be represented as (AF)16

14 15 BINARY

• Just like any other number system, we can do • In fact, since all data on your is stored in binary, this is how the computer does calculations

16 BINARY ADDITION

• Addition in decimal is second nature to us, but lets think about how we do it • To add up 2 , we simple add them digit by digit • Then for any given pair of digits, since the numbers must be between 0 and 9, the resulting addition is between 0 and 18 • If the result requires more than one digit (e.g. 10 to 18), we carry over the second digit to our next calculation

17 BINARY ADDITION

• In binary, it works the same. Each pair of numbers is between 0 and 1, so the resulting addition is between 0 and 3 in decimal, or between 0 and 11 in binary (0, 1, 10, or 11) • If the result requires more than one digit, we carry over the second digit to our next calculation

18 BINARY ADDITION

• Let’s look at a few examples on the board

19 DEALING WITH NEGATIVES

• In the decimal system, we use a “-“ to delineate negative numbers • In the binary system, there are two primary options • using a single bit for sign • two’s complement, a special scheme

20 DEALING WITH NEGATIVES

• Signed binary numbers utilize the frst bit as just an indicator of the sign of the remaining bits • So in 4 bits, the number 6 is represented as 0110 or equivalently +110, while the number -6 is represented as 1110 or equivalently -110

21 DEALING WITH NEGATIVES

• There are 2 big drawbacks to this scheme • First, we always have both +0 and -0, which is annoying if we ever want to make comparisons to 0 • For example, if we want to check if a number is =0, we must check if = +0 or = -0

22 DEALING WITH NEGATIVES

• Additionally, to do operations like (5 - 7), we need to do the same complicated algorithms we learned as children, but with the added complexity of binary • Wouldn’t it be great if we could just use the simple addition we already know?

23 COMPLEMENT

• We can utilize the method of complements to make subtraction easy • You might have learned this for decimal as a way to do quick mental subtraction • This method makes binary subtraction a lot easier, with the caveat that we must only operate on a fxed number of bits (e.g. we limit ourselves to 4 bits)

24 ONE’S COMPLEMENT

• One’s complement is not widely used, but its worth it as a stepping stone to two’s complement • For positive numbers, we represent them the same as signed binary • For negative numbers, we represent them by taking the positive number and fipping all the bits • Thus, all positive numbers start with 0 and all negative numbers start with 1

25 ONE’S COMPLEMENT

• The number 6 is represented as 0110 • The number -6 is represented as 1001 • Given an unknown number 1010, we know its negative because it starts with 1, so we fip the bits • The result is 0101 = 5, so 1010 = -5

26 ONE’S COMPLEMENT 011 3 3 010 2 2 001 1 1 000 0 0 111 -3 -0 110 -2 -1 101 -1 -2 100 -0 -3 27 ONE’S COMPLEMENT

• To do subtraction then becomes easy • To do 4-7, we just do 4+(-7) • 4 is 0100, 7 is 1000 • 0100 + 1000 = 1100 = -(0011) = -3

28 ONE’S COMPLEMENT

• We’ve solved our subtraction problem, but unfortunately • +0 = 0000 = 1111 = -0 • so we still have 2 zeros

29 ONE’S COMPLEMENT

• To fx this, we should shift our negative numbers down by one • So in 4 bits, instead of our numbers going between 0 and 7 and -0 and -7, they’ll go between 0 and 7 and -1 and -8, with no duplicates • This scheme is called Two’s Complement

30 TWO’S COMPLEMENT

• Similarly to one’s complement and signed binary, all positive numbers start with 0 and all negative numbers start with 1 • The only difference with one’s complement is that after fipping the bits, we add 00…..01 to our number • Its counterintuitive to add 1 when we want to subtract one from our negative numbers, but remember that one’s and two’s complement make negative numbers symmetric

31 TWO’S COMPLEMENT

• The number 6 is represented as 0110 • The number -6 is represented as 1010 • For -6, we start with 6 (0110), fip the bits (1001), and then add 0001 (1010) • Given an unknown number 1010, we know its negative because it starts with 1, so we fip the bits and add 1 • 1010, then fip the bits (0101), then add 0001 (0110), so 1010 = -6

32 TWO’S COMPLEMENT 011 3 3 010 2 2 001 1 1 000 0 0 111 -3 -1 110 -2 -2 101 -1 -3 100 -0 -4 33 TWO’S COMPLEMENT

• Subtraction remains easy • To do 4-7, we just do 4+(-7) • 4 is 0100 • To fgure out -7 we start with 7 (0111), fip the bits (1000) and add 0001 ( 1001) • 0100 + 1001 = 1101 • We know 1101 is negative because it starts with a 1, so we fip the bits (0010) and add 0001 (0011) • so our result is -3

34 TWO’S COMPLEMENT

• Let’s go through a few conversion and addition examples on the board

35