boolean algebra. starter task state 5 basic data types together with one operation that can be...
TRANSCRIPT
Boolean Algebra
Starter Task
• State 5 basic data types together with one operation that can be performed on each.
• We have looked at 4 in the past few weeks...
Answers
• Variable• Array
– Insert a value into a certain position in the array• Stack
– Pop, Push• Queue
– enQueue, Serve• Binary Tree
– Search through and add values / Delete values• Linked List
– Add items to the list, remove items from the list
Over the next Few Weeks...• Working through the booklets...
• Binary Numbers• Hexadecimal Numbers• Characters• ASCII – Strings and Character sets• Negative Numbers
• Two’s complement, representation sign, magnitude
• Shifting• Fixed Point, Floating Point
– Conversion + Benefits• Rounding + Truncation effects on accuracy• Overflow, Underflow
We use Base 10...
• Because we have 10 fingers
What if we had 16?
This gives us the structure of...
• Every 10th value we add an extra number...– 2– 12– 23– 178– Etc...
Base 10 looks like...
• The number 1583 means 1 'thousand', 5 'hundreds', 8 'tens' and 3 'units'...
Where each column is 10^X
• 10^1 = 10• 10^2 = 100• 10^3 = 1000• 10^4 = 10,000
Consider this...
• Computers only use base 2...
• How would this look in a table?
• What will a base 2 set of numbers look like?
Base 2
Base 2
128 64 32 16 8 4 2 1
Representing numbers...
• What number do you think this will represent?
• 10010110
Base 2
128 64 32 16 8 4 2 1
1 0 0 1 0 1 1 0
•150
What do the following numbers =
• 10000101• 01000001• 11111111• 10110101• 00000000• 10101111• 00101010• 00111011• 10111010
Answers
• 10000101 = 128 + 0 + 0 + 0 + 0 + 4 + 0 + 1 = 133
• 65• 255• 181• 0• 175• 42• 59• 186
What if I wanted to go the other way...
• How would I convert 22 into binary?
128 64 32 16 8 4 2 1
Actions
• 22 / 2 = 11 r 0
• _ _ _ _0
Actions
• 22 / 2 = 11 r 0• 11 / 2 = 5 r 1
• _ _ _10
Actions
• 22 / 2 = 11 r 0• 11 / 2 = 5 r 1• 5 / 2 = 2 r 1
• _ _110
Actions
• 22 / 2 = 11 r 0• 11 / 2 = 5 r 1• 5 / 2 = 2 r 1• 2 / 2 = 1 r 0
• _ 0110
Actions
• 22 / 2 = 11 r 0• 11 / 2 = 5 r 1• 5 / 2 = 2 r 1• 2 / 2 = 1 r 0• 1 / 2 = 0 R 1
• 1 0110
What if I wanted to go the other way...
• How would I convert 22 into binary?
128 64 32 16 8 4 2 1
0 0 0 1 0 1 1 0
Actions
• Divide each value into largest number and put a one in the table...
What are the following binary numbers?
• 156• 45• 78• 97• 123• 245• 253• 7• 184• 111
What are the following binary numbers?
• 156 = 10011100• 45 = 00101101• 78 = 01001110• 97 = 01100001• 123 = 01111011• 245 = 11110101• 253 = 11111101• 7 = 00000111• 184 = 10111000• 111 = 01101111
Bytes
• So far everything has consisted of once byte... • 8 bits... Byte
• 4bits... Nybble (rarely used now)• 1101=13
Standard Computers are 32bit...
• What would be the maximum value that a 32bit computer can hold?
• You might want to use a calculator...
• 32 bit = 4,294,967,295
• This is the biggest value for a 32bit computer...• However it doesn’t exist in many operating
systems...
64Bit...
• What about 64bit?
Again...
• 18,446,744,073,709,552,000
• This number will not be found in 64bit operating systems...
• Can you look down the list of contents in the booklet to see why?
Summary Video’s
• http://www.youtube.com/watch?v=qdFmSlFojIw
• http://courses.cs.vt.edu/csonline/NumberSystems/Lessons/DecimalToBinaryConversion/index.html
Convertor
• http://mistupid.com/computers/binaryconv.htm
Lesson 2
• Hexadecimal notation...
• What do you think hexadecimal notation looks like?
Hexadecimal notation1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
0 1 2 3 4 5 6 7 8 9 A B C D E F
What’s it used for
• Give a more readable notation for people to use.
• Decimal = 10,995• Binary = 10101011110011• Hexadecimal = 2AF3
How it’s used...
• Have you ever seen...• #33FD56
• In HTML coding...• Gives you a colour• #33FD56
Each part = nybble
•#33FD56•33 = 51 =0011 0011•FD = 253 =1111 1101•56 = 86 =0101 0110
Task 2
• Fill in the table: You will have to remember how to complete binary numbers...
Now we have 3 ways to represent numbers...
• What is the point?
• We can represent 0-255 numbers using 1byte or 1 hexadecimal code
• Can you think of why we would use this?
Character Sets
• All the symbols, letters, numbers have a binary representation
• There are 128 different characters that we call
ASCIIThis is a Standard!
ASCII
• (American Standardised Code for Information Interchange)
• Needed so that computers share documents together:
Others include:EBCDIC (Extended Binary Coded Decimal Interchange Code)
ISO 8859, for ß (German), ñ (Spanish), å (Swedish)ANSI (American National Standards Institute)
ASCII Character Set
Words
• In order to write the word Hello
Task
• How would hello world read?
• How many bits are used for each character?
Letter
H E L L O W O R L DNumber
Binary
Hello World
• 01001000 01100101 01101100 01101100 01101111 00100000 01010111 01101111 01110010 01101100 01100100
Hello World
• 48 65 6c 6c 6f 20 57 6f 72 6c 64
Practice
• What about the sentence:
• There are 10 types of people in the world: those who understand binary, and those who don't.
Thankful for abstraction?
• Imagine trying to code in binary...
Abstract a little
• Hollerith Punch Card
Monkeys
• We don’t need to be intelligent to talk binary
Summary
• What is binary?
• How can we use binary?
• What is Hexadecimal?
• Why is it used?
Lesson 3
• Negative numbers?
• What is the Largest and smallest numbers that you can have?
Negative numbers
• Need to put in the minus sign –
• Sign/Magnitude • Two’s complement
Sign/Magnitude Representation
• We have 8 bits• 10010101
• The first represents the sign:• 10010101
Converting Binary
• -26• 26/2 = 13 r 0• 13/2 = 6 r 1• 6 / 2 = 3 r 0• 3 / 2 = 1 r 1• 1 / 2 = 0 r 1
11010
8 bit information
• Take our number: 11010• It is negative: -26
• Starts with a 1, then put 0’s in and then the number...
• 10011010
Practice
• a) -3 • • b) -10 • • c) -62 • • d) 62 • • e) 13 • • f) 128
Answers
• a) -3 = 10000011• • b) -10 = 10001010• • c) -62 = 10111110• • d) 62 = 00111110• • e) 13 = 00001101• • f) 128 = 10000000
What are the issues with this?
• What is the problem with representing 128?
• How would we type in -128
• What is the main limtation?
Problems
• Halves the amount of numbers that you can have...
This is why it is rarely used any more.
• Sign/Magnitude has/is being phased out
• Two’s Complement is the new thing!
Two’s Compliment
• How else could we represent negative numbers?
Count down, and reset the clock
So to work out a number:
• Find the number in Binary as (-)35:– 100011
• Find the complement:– 011100
• Add 1 to the value:– 011100– 000001– 011101
Convert the following numbers
• 55• 111• 19• 27• 79• 88
• Can you spot a trend with these number?
Answers
• -55 = 11001001• -111 = 10010001• -19 = 11101101• -27 = 11100101• -79 = 10110001• -88 = 10101000
• Can you spot a trend with these number?
Convertor
• http://www.rsu.edu/faculty/PMacpherson/Programs/twos.html
Math with Binary
• Works just like denary Math...
• When you add one, it increase’s the value:
• Add 1 to 199
Adding
199001 + 200
Same kind of thing for Binary
• 88 = 01011000• Complement = 10100111
000000011 + 1 = 0 r 10
1
Same kind of thing for Binary
• 88 = 01011000• Complement = 10100111
000000011 + 1 = 0 r 100
1
Same kind of thing for Binary
• 88 = 01011000• Complement = 10100111
000000011 + 1 = 0 r 1000
1
Same kind of thing for Binary
• 88 = 01011000• Complement = 10100111
000000010 + 1 = 1 r 01000
0
Same kind of thing for Binary
• 88 = 01011000• Complement = 10100111
000000010 + 0 = 0 r 001000
0
Same kind of thing for Binary
• 88 = 01011000• Complement = 10100111
000000010 + 1 = 1 r 0101000
0
Same kind of thing for Binary
• 88 = 01011000• Complement = 10100111
000000010 + 0 = 0 r 00101000
0
Same kind of thing for Binary
• 88 = 01011000• Complement = 10100111
000000011 + 0 = 0 r 0101010000
Your Turn
• Try Converting these• -18 • -64• -19• -16• 58
Answers
• Try Converting these• -18 = 11101110 • -64 = 11000000• -19 = 11101101• -16 = 11110000• 58 = 00111010
Summary
• Sign / Magnitude
• Two’s Compliment
• Adding Binary Numbers together
Shifting
• As the name implies:
• Moving items along:
• Try the task in the booklets...
1011010 1101101 0110110
Shift Left Shift Right
Shifting
• 10001101 – Shift Left - 00011010• 10010101 – Shift Right - 01001010• 00010101 – Shift Left - 00101010• 10010101 – Shift Left - 00101010• 10010110 – Shift Right - 01001011• 01101010 – Shift Left - 11010110
Shifting
• 2 Types
• Logical Shift • Arithmetic Shift
Logical Shift
• Need a set of binary:– Carry Flag:
• Everything either goes left / right• The item that drops off the list gets put in the
Carry Flag
Logical Shifting
• 10001101 – Shift Left - 00011010• 10010101 – Shift Right - 01001010• 00010101 – Shift Left - 00101010• 10010101 – Shift Left - 00101010• 10010110 – Shift Right - 01001011• 01101010 – Shift Left - 01101010
Carry Flag
110100
Arithmetic Shift
• Similar to the Logical Shift except:
Arithmetic Shifting
• 10001101 – Shift Left - 00011011• 10010101 – Shift Right - 11001010• 00010100 – Shift Left - 00101000• 10010101 – Shift Left - 00101011• 10010110 – Shift Right - 11001011• 01101010 – Shift Left - 11010100
Carry Flag
110100
Look at the shifting task...
00110101 = 0110101010110010 = 01011001
00101110 = 0001011111001011 = 10010111
Carry Flag
00
01
Next Task
• Perform the following steps, converting the number to see what happens...
Answers
1. 622. 1243. 2484. 31
Practice
• Using an Array of 1’s or 0’s can you code an arithmetic shift to the left or the right?
• Create an array : binary(10)• Populate it with numbers– For i as integer 1 to binary.length-1
• Shift to the left =– For i as integer 1 to binary.length-1
• Binary(binary.length – i) = binary(binary.length – i+1)
– Next
Shifting
• Summary
• Shifting is useful because?
Lesson 5
• Complete the binary task in the booklets
• 11• 15• -95• 185• -34• -15
Answers
• 11 = 00001011• 15 = 00001111• -95 = 10100001• 125 = 01111101• -34 = 11011110• -15 = 11110001
Lesson 5
• Floating Point
• Using “binary” places to represent numbers...
In Decimal
• In denary the integer 25000 can be written as• 2.5 x 104
• This has the structure of: – Unit.Decimal x 10 ^ X
– Mantissa x 10 Exponent
This can also be applied to binary
• Mantissa x 10 Exponent
• First step – we need to get the number in its lowest form...
• This is achieved through halving
= 20 x 21
= 10 x 22 = 5 x 23 = 2.5 x 24
= 1.25 x 25
= 0.625 x 26
Golden Rule
• Need to get the mantissa to a value between 0.5 and 1
• = 0.625 x 26
• A floating point number system uses 16-bit numbers.
• 8 bits for the (signed)mantissa, and 8 bits for the (signed) exponent.
• 01010001 00000101
How this works...
• 0.625 x 26
• Means – 0.625 arithmetically shifted right 6 times...
• To get back to the number we must shift it left 6 times
01010000 00000110
Sign 1/2 1/4 1/8 1/16 1/32 1/64 1/128
0 1 0 1 0 0 0 0= 0.625
= 6
= Mantissa
= Exponent
Sign 4 2 1
0 1 1 0
This is like saying
•01010000 x 2 00000110
Task 1
• Can you represent 24 as a binary number?
24
Sign 1/2 1/4 1/8 1/16 1/32 1/64 1/128
0 1 1 0 0 0 0 0= 0.75
= 5
= Mantissa
= ExponentSign 4 2 1
0 1 0 1
How about 0.0625
0.0625
Sign 1/2 1/4 1/8 1/16 1/32 1/64 1/128
0 1 0 0 0 0 0 0= 0.5
= -3
= Mantissa
= ExponentSign 4 2 1
1 0 1 1
-14
-14
Sign 1/2 1/4 1/8 1/16 1/32 1/64 1/128
1 1 1 1 0 0 0 0= -0.875
Sign 4 2 1
0 1 0 0= 4
= Mantissa
= Exponent
Whats the difference with these numbers?
• Can you see how these would be used instead of previous numbers that we have looked at?
• You have used these before...
Real Numbers
• Whenever you declare a double then you are going to be using floating point numbers.
• The Mantissa and the exponent can change in length depending on the definitions placed upon it.
Conversion Techniques
• You start with the Mantissa
• If the Exponent is +ve– Shift to the left
• If it’s negative– Shift to the right
Can you use these examples to convert back?
• 01010001 0101• 011010000 0110
Answer
• 19.25• 104
Floating Point Numbers
• Pro’s– A much wider range of numbers can be declared
• Con’s– More Space is required to use them– Slower Processing Times– Lack of Precision
• some real numbers can only be represented approximately
Range
• To increase the range you increase the mantissa
• To increase the precision you increase the mantissa
Lesson 6
• Start the task...
Answers
• 12 = 01100000 0100
• 9.76 – Can this be done?
• Can you convert 0.1 into a decimal?
Rounding
• For example, 1.36 rounded to one decimal place is 1.4 giving a rounding error of 0.04.
• This can be done in binary too however there are many different ways that this can be done...
If we round the following binary number...
• 10101
• 4 b.p.
• 2 b.p.• What do we get?
Your Turn
Truncation
• For example, 1.36 truncated to one decimal place is 1.3 giving a truncation error of 0.6.
• Shift the number to the right 3 places..., then back to the left 3 places
• 01101001
Your Turn
• Truncate the numbers,
• Find a rule for the amount of error within truncation.
Error Accumulation
• If you round 1.356 to 2 decimal places the rounding errors is ………?
• If you then multiply the result by 1000 the rounding error becomes ……?
Overflow
• Using 8bit integer perform the following calculation...
• 150+130
• Represent the answer as binary
Overflow
• Convert the following numbers...• Add the following numbers together and then
convert the answer...
• Is this right?
Summary
• There are issues with binary representation
• Good programming languages will warn you of this...
• Needs to be handled by the developer.