Fall 2014
Instructor: Reza Entezari-Maleki
Email: entezari@ce.sharif.edu
Sharif University of Technology
1
Fundamentals of Programming
Session 2
Fundamentals of Programming Session 2 Instructor: Reza - - PowerPoint PPT Presentation
Fundamentals of Programming Session 2 Instructor: Reza Entezari-Maleki Email: entezari@ce.sharif.edu 1 Fall 2014 Sharif University of Technology Outlines Computer Organization Programming Language Binary numbers Addition
Fall 2014
Sharif University of Technology
1
Session 2
Computer Organization … Programming Language Binary numbers
Addition Subtraction Division Multiplication
One’s and Two’s Complement
2
a central processing unit (CPU) consists of an arithmetic/logic unit (ALU) where math and logic operations are
performed,
a control unit which directs most operations by providing timing and
control signals,
and registers that provide short-term data storage and management
facilities.
an arithmetic/logic unit (ALU) The type of operation that the ALU needs to perform is determined by
signals from the control unit.
The data can come either from the input unit or from the memory unit. Results of the operation can either be transferred back to the memory
unit or directly to the output unit.
3
control unit contains logic and timing circuits that generate the appropriate signals
necessary to execute each instruction in a program
It fetches an instruction from memory by sending an address and a
read command to the memory unit.
After decoding this instruction, the control unit transmits the
appropriate signals to the other units in order to execute the specified
This sequence of fetch and execute is repeated by the control unit until
the computer is either powered off or reset.
4
A programming language is an artificial language designed to
express computations that can be performed by a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine, to express algorithms precisely,
as a mode
human communication.
Many programming languages have some form of written
specification of their syntax (form) and semantics (meaning). Some languages are defined by a specification document. For example, the C programming language is specified by an ISO
implementation that is used as a reference.
5
First Generation: Machine languages
Strings of numbers giving machine specific instructions Example:
1300042774 1400593419 1200274027
Computer
Second Generation: Assembly languages
English-like
abbreviations representing elementary computer operations (translated via assemblers)
6
Example:
LOAD BASEPAY ADD OVERPAY STORE GROSSPAY
Third Generation : High-level languages
Codes similar to everyday English Use mathematical notations (translated via
Example: grossPay = basePay + overPay
7
8
Operating System Assemblers Compilers Interpreters
9
Binary numbers
Why binary?
Computers are built using digital circuits
Inputs and outputs can have only two values True (high voltage) or false (low voltage)
Converting base 10 to base 2 Octal and hexadecimal
Integers
Unsigned integers Integer addition Signed integers
C bit operators
And, or, not, and xor Shift-left and shift-right
10
Base 10
Each digit represents a power of 10 4173 = 4*103 + 1*102 + 7*101 + 3*100
Base 2
Each bit represents a power of 2 10110 = 1*24 + 0*23 + 1*22 + 1*21 + 0*20 = 22 Question: What is the binary representation of number 12 ?
Response:
1100
11
Octal (base 8)
Digits 0, 1, …, 7
Thus the 12 bit binary 110 010 101 001
12
000 = 0 001 = 1 010 = 2 011 = 3 100 = 4 101 = 5 110 = 6 111 = 7
Question: What is the octal representation of number 118 (in base 10) ?
Response:
166 Question: What is the octal representation of number 1011000101 (in base 2) ?
Response:
1305 Question: What is the binary representation of number 1472 (in base 8) ?
Response:
1100111010
13
Hexadecimal (base 16)
Digits 0, 1, …, 9, A, B, C, D, E, F Thus the 16-bit binary number 1011 0010 1010 1001
14
0000 = 0 1000 = 8 0001 = 1 1001 = 9 0010 = 2 1010 = A 0011 = 3 1011 = B 0100 = 4 1100 = C 0101 = 5 1101 = D 0110 = 6 1110 = E 0111 = 7 1111 = F
Question: What is the hexadecimal representation of number 375 (in base 10)
?
Response:
177 Question: What is the hexadecimal representation of number 1011000101(in
base 2) ?
Response:
2C5 Question: What is the binary representation of number 6A4D2 (in base 16) ?
Response:
01101010010011010010
15
Fixed number of bits in memory
Short: usually 16 bits Int: 16 or 32 bits Long: 32 bits
Unsigned integer
No sign bit Always positive or 0
Example of unsigned int
00000001
1
00001111 15 00010000 16 00100001 33 11111111 255
16
17
0 + 0
0 + 1
1 + 0
1 + 1
1 + 1 + 1
18
Example 1: Add binary 110111 to 11100
Col 1) Add 1 + 0 = 1 Write 1 Col 2) Add 1 + 0 = 1 Write 1 Col 3) Add 1 + 1 = 2 (10 in binary) Write 0, carry 1 Col 4) Add 1+ 0 + 1 = 2 Write 0, carry 1 Col 6) Add 1 + 1 + 0 = 2 Write 0, carry 1 Col 5) Add 1 + 1 + 1 = 3 (11 in binary) Write 1, carry 1 Col 7) Bring down the carried 1 Write 1
19
1101112 5510 +0111002 + 2810 8310 64 32 16 8 4 2 1 1 0 1 0 0 1 1 = 64 + 16 + 2 +1 = 8310
20
1) Try to subtract 5 – 7 can’t. Must borrow 10 from next column. 4) Subtract 7 – 4 = 3 3) Subtract 9 – 6 = 3 2) Try to subtract 1 – 5 can’t. Must borrow 10 from next column. But next column is 0, so must go to column after next to borrow. Add the borrowed 10 to the original 0. Now you can borrow 10 from this column. Add the borrowed 10 to the original 5. Then subtract 15 – 7 = 8. Add the borrowed 10 to the original 1.. Then subtract 11 – 5 = 6
21
22
23
Col 1) Subtract 1 – 0 = 1 Col 5) Try to subtract 0 – 1 can’t. Must borrow from next column. Col 4) Subtract 1 – 1 = 0 Col 3) Try to subtract 0 – 1 can’t. Must borrow 2 from next column. But next column is 0, so must go to column after next to borrow. Add the borrowed 2 to the 0 on the right. Now you can borrow from this column (leaving 1 remaining). Col 2) Subtract 1 – 0 = 1 Add the borrowed 2 to the original 0. Then subtract 2 – 1 = 1
Add the borrowed 2 to the remaining 0. Then subtract 2 – 1 = 1 Col 6) Remaining leading 0 can be ignored.
24
Verification 1100112 5110
2310 64 32 16 8 4 2 1 1 0 1 1 1 = 16 + 4 + 2 + 1 = 2310
Subtract binary 11100 from 110011:
25
Consider only numbers in a range
E.g., five-digit car odometer: 0, 1, …, 99999 E.g., eight-bit numbers 0, 1, …, 255
Roll-over when you run out of space
E.g., car odometer goes from 99999 to 0, 1, … E.g., eight-bit number goes from 255 to 0, 1, …
26
27
One’s complement: flip every bit
E.g., b is 01000101 (i.e., 69 in base 10) One’s complement is 10111010 That’s simply 255-69
Subtracting from 11111111 is easy (no carry needed!) Two’s complement
Add 1 to the one’s complement E.g., (255 – 69) + 1 1011 1011
1111 1111 1011 1010 b
Computing “a – b” for unsigned integers
Same as “a + 256 – b” Same as “a + (255 – b) + 1” Same as “a + onecomplement(b) + 1” Same as “a + twocomplement(b)”
Example: 172 – 69
The original number 69: 0100 0101 One’s complement of 69: 1011 1010 Two’s complement of 69: 1011 1011 Add to the number 172: 1010 1100 The sum comes to: 0110 0111 Equals: 103 in base 10
28
1010 1100 + 1011 1011 1 0110 0111
Sign-magnitude representation
Use one bit to store the sign
Zero for positive number One for negative number
Examples
E.g., 0010 1100 44 E.g., 1010 1100 -44
Hard to do arithmetic this way, so it is rarely used
Complement representation
One’s complement
Flip every bit E.g., 1101 0011 -44
Two’s complement
Flip every bit, then add 1 E.g., 1101 0100 -44 29