CENG 311 Machine Representation/Numbers

Slides:



Advertisements
Similar presentations
HEXADECIMAL NUMBERS Code
Advertisements

CS61C L02 Number Representation (1) Garcia, Spring 2005 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
CS 61C L02 Number Representation (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
COMP3221: Microprocessors and Embedded Systems--Lecture 1 1 COMP3221: Microprocessors and Embedded Systems Lecture 3: Number Systems (I)
COMP3221 lec05-numbers-I.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lecture 5: Number Systems – I
Chapter 2 : Number System
1 CSE1301 Computer Programming Lecture 29: Number Representation (Part 1)
CS 61C L03 Introduction to C (1)Harvey / Wawrzynek Fall 2003 © UCB 8/29/2003  Brian Harvey ( John Wawrzynek  (Warznek) (
CS 61C L02 Number Representation (1)Harvey / Wawrzynek Fall 2003 © UCB 8/27/2003  Brian Harvey ( John Wawrzynek  (Warznek) (
Data Representation Computer Organization &
COMP3221 lec06-numbers-II.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lecture 6: Number Systems - II
Data Representation COE 205
Assembly Language and Computer Architecture Using C++ and Java
Chapter 3 Data Representation.
The slides are modified from Dan Garcia,
Introduction to Programming with Java, for Beginners
CS 61C L02 Number Representation (1) Garcia, Spring 2004 © UCB Lecturer PSOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
Signed Numbers.
Assembly Language and Computer Architecture Using C++ and Java
Chapter 3 Data Representation. Chapter goals Describe numbering systems and their use in data representation Compare and contrast various data representation.
Machine Representation/Numbers Lecture 3 CS 61C Machines Structures Fall 00 David Patterson U.C. Berkeley
CS 61C L2 Introduction to C (1) A Carle, Summer 2006 © UCB inst.eecs.berkeley.edu/~cs61c CS61C : Machine Structures Lecture 2: Introduction To C
1 Binary Arithmetic, Subtraction The rules for binary arithmetic are: = 0, carry = = 1, carry = = 1, carry = = 0, carry =
Number Representation (1) Fall 2005 Lecture 12: Number Representation Integers and Computer Arithmetic.
COMP3221 lec07-numbers-III.1 Saeid Nooshabadi COMP 3221 Microprocessors and Embedded Systems Lecture 7: Number Systems - III
+ CS 325: CS Hardware and Software Organization and Architecture Integers and Arithmetic Part 4.
CS61C L2 Number Representation & Introduction to C (1) Beamer, Summer 2007 © UCB Scott Beamer Instructor inst.eecs.berkeley.edu/~cs61c CS61C : Machine.
Signed Numbers CS208. Signed Numbers Until now we've been concentrating on unsigned numbers. In real life we also need to be able represent signed numbers.
1 Binary Numbers Again Recall that N binary digits (N bits) can represent unsigned integers from 0 to 2 N bits = 0 to 15 8 bits = 0 to bits.
Number Systems Lecture 02.
COMP201 Computer Systems Number Representation. Number Representation Introduction Number Systems Integer Representations Examples  Englander Chapter.
+ CS 325: CS Hardware and Software Organization and Architecture Integers and Arithmetic.
Lecture 2: Number Representation
CSCI-365 Computer Organization Lecture Note: Some slides and/or pictures in the following are adapted from: Computer Organization and Design, Patterson.
CSCI 136 Lab 1 Outline Go through the CD attached to the textbook. Homework Hints 135 Review.
Lecture 5.
Computers Organization & Assembly Language
CMPE 325 Computer Architecture II Cem Ergün Eastern Mediterranean University Integer Representation and the ALU.
Click to edit Master title style Click to edit Master text styles –Second level Third level –Fourth level »Fifth level 1 Today’s Topics How information.
IT253: Computer Organization
Computing Systems Basic arithmetic for computers.
Lec 3: Data Representation Computer Organization & Assembly Language Programming.
Digital Logic Design Lecture 3 Complements, Number Codes and Registers.
+ CS 325: CS Hardware and Software Organization and Architecture Integers and Arithmetic Part 2.
Calculating Two’s Complement. The two's complement of a binary number is defined as the value obtained by subtracting the number from a large power of.
Data Representation Dr. Ahmed El-Bialy Dr. Sahar Fawzy.
46 Number Systems Problem: Implement simple pocket calculator Need: Display, adders & subtractors, inputs Display: Seven segment displays Inputs: Switches.
Lecture 5. Topics Sec 1.4 Representing Information as Bit Patterns Representing Text Representing Text Representing Numeric Values Representing Numeric.
Bits, Data Types, and Operations Slides based on set prepared by Gregory T. Byrd, North Carolina State University.
Lecture 11: Chapter 2 Today’s topic –Numerical representations Reminders –Homework 3 posted, due 9/29/2014 –Homework 4 posted, due 10/6/2014 –Midterm 1.
1 Data Representation Characters, Integers and Real Numbers Binary Number System Octal Number System Hexadecimal Number System Powered by DeSiaMore.
CS61C L02 Number Representation (1) Garcia, Spring 2010 © UCB Lecturer SOE Dan Garcia inst.eecs.berkeley.edu/~cs61c CS61C.
Data Representation in Computer Systems. 2 Signed Integer Representation The conversions we have so far presented have involved only positive numbers.
07/12/ Data Representation Two’s Complement & Binary Arithmetic.
IT 251 Computer Organization and Architecture Number Representation Chia-Chi Teng.
SAK Chapter 21 Chapter 2 : Number System 2.1 Decimal, Binary, Octal and Hexadecimal Numbers 2.2 Relation between binary number system with other.
Cs641 pointers/numbers.1 Overview °Stack and the Heap °malloc() and free() °Pointers °numbers in binary.
CS1Q Computer Systems Lecture 2 Simon Gay. Lecture 2CS1Q Computer Systems - Simon Gay2 Binary Numbers We’ll look at some details of the representation.
1 Lecture 7: MARS, Computer Arithmetic Today’s topics:  MARS intro  Numerical representations  Addition and subtraction.
1 IKI20210 Pengantar Organisasi Komputer Kuliah No. 23: Aritmatika 18 Desember 2002 Bobby Nazief Johny Moningka
Numbers in Computers.
EE204 L03-ALUHina Anwar Khan EE204 Computer Architecture Lecture 03- ALU.
IT 251 Computer Organization and Architecture Number Representation Chia-Chi Teng.
Based on slides from D. Patterson and www-inst.eecs.berkeley.edu/~cs152/ COM 249 – Computer Organization and Assembly Language Chapter 3 Arithmetic For.
Bits, Data Types, and Operations
Negative Integers Unsigned binary representation can not be used to represent negative numbers. With paper and pencil arithmetic, a number is made negative.
3.1 Denary, Binary and Hexadecimal Number Systems
Integer Real Numbers Character Boolean Memory Address CPU Data Types
March 2006 Saeid Nooshabadi
Number Representation
Presentation transcript:

CENG 311 Machine Representation/Numbers 4/21/2017 CENG 311 Machine Representation/Numbers CS61C F99

C Designed for writing systems code, device drivers C v. Java C Designed for writing systems code, device drivers C is an efficient language, with little protection Array bounds not checked Variables not automatically initialized C v. Java: pointers and explicit memory allocation and deallocation No garbage collection Leads to memory leaks, funny pointers Structure declaration does not allocate memory; use malloc() and free()

Overview Recap: C v. Java Computer representation of “things” Unsigned Numbers Computers at Work Signed Numbers: search for a good representation Shortcuts In Conclusion

Decimal Numbers: Base 10 Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Example: 3271 = (3x103) + (2x102) + (7x101) + (1x100)

Numbers: positional notation 4/21/2017 Numbers: positional notation Number Base B => B symbols per digit: Base 10 (Decimal): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Base 2 (Binary): 0, 1 Number representation: d31d30 ... d2d1d0 is a 32 digit number value = d31x B31 + d30 x B30 + ... + d2 x B2 + d1 x B1 + d0 x B0 Binary: 0,1 1011010 = 1x26 + 0x25 + 1x24 + 1x23 + 0x22 + 1x2 + 0x1 = 64 + 16 + 8 + 2 = 90 Notice that 7 digit binary number turns into a 2 digit decimal number A base that converts to binary easily? CS61C F99

Hexadecimal Numbers: Base 16 4/21/2017 Hexadecimal Numbers: Base 16 Hexadecimal: 0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F Normal digits + 6 more: picked alphabet Conversion: Binary <-> Hex 1 hex digit represents 16 decimal values 4 binary digits represent 16 decimal values => 1 hex digit replaces 4 binary digits Examples: 1010 1100 0101 (binary) = ? (hex) 10111 (binary) = 0001 0111 (binary) = ? 3F9(hex) = ? (binary) CS61C F99

Decimal vs. Hexadecimal vs.Binary Examples: 1010 1100 0101 (binary) = ? (hex) 10111 (binary) = 0001 0111 (binary) = ? (hex) 3F9(hex) = ? (binary) 00 0 0000 01 1 0001 02 2 0010 03 3 0011 04 4 0100 05 5 0101 06 6 0110 07 7 0111 08 8 1000 09 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111

What to do with representations of numbers? Just what we do with numbers! Add them Subtract them Multiply them Divide them Compare them Example: 10 + 7 = 17 so simple to add in binary that we can build circuits to do it subtraction also just as you would in decimal 1 1 1 0 1 0 + 0 1 1 1 ------------------------- 1 0 0 0 1

Decimal: great for humans, especially when doing arithmetic Which base do we use? Decimal: great for humans, especially when doing arithmetic Hex: if human looking at long strings of binary numbers, its much easier to convert to hex and look 4 bits/symbol Terrible for arithmetic; just say no Binary: what computers use; you learn how computers do +,-,*,/ To a computer, numbers always binary Doesn’t matter base in C, just the value: 3210 == 0x20 == 1000002 Use subscripts “ten”, “hex”, “two” in book, slides when might be confusing

Limits of Computer Numbers Bits can represent anything! Characters? 26 letter => 5 bits upper/lower case + punctuation => 7 bits (in 8) rest of the world’s languages => 16 bits (unicode) Logical values? 0 -> False, 1 => True colors ? locations / addresses? commands? but N bits => only 2N things

Comparison How do you tell if X > Y ? See if X - Y > 0

How to Represent Negative Numbers? So far, unsigned numbers Obvious solution: define leftmost bit to be sign! 0 => +, 1 => - Rest of bits can be numerical value of number Representation called sign and magnitude MIPS uses 32-bit integers. +1ten would be: 0000 0000 0000 0000 0000 0000 0000 0001 And - 1ten in sign and magnitude would be: 1000 0000 0000 0000 0000 0000 0000 0001

Shortcomings of sign and magnitude? Arithmetic circuit more complicated Special steps depending whether signs are the same or not Also, Two zeros 0x00000000 = +0ten 0x80000000 = -0ten What would it mean for programming? Sign and magnitude abandoned

Another try: complement the bits Example: 710 = 001112 -710 = 110002 Called one’s Complement Note: postive numbers have leading 0s, negative numbers have leadings 1s. 00000 00001 01111 ... 11111 11110 10000 What is -00000 ? How many positive numbers in N bits? How many negative ones?

Shortcomings of ones complement? Arithmetic not too hard Still two zeros 0x00000000 = +0ten 0xFFFFFFFF = -0ten What would it mean for programming? One’s complement eventually abandoned because another solution was better

Search for Negative Number Representation Obvious solution didn’t work, find another What is result for unsigned numbers if tried to subtract large number from a small one? Would try to borrow from string of leading 0s, so result would have a string of leading 1s With no obvious better alternative, pick representation that made the hardware simple: leading 0s  positive, leading 1s  negative 000000...xxx is >=0, 111111...xxx is < 0 This representation called two’s complement

2’s Complement Number line 11111 00000 00001 2 N-1 non-negatives 2 N-1 negatives one zero how many positives? comparison? overflow? 11100 00010 -1 1 -2 2 . . -15 15 -16 01111 10001 10000

One zero, 1st bit => >=0 or <0, called sign bit Two’sComplement 0000 ... 0000 0000 0000 0000two = 0ten 0000 ... 0000 0000 0000 0001two = 1ten 0000 ... 0000 0000 0000 0010two = 2ten . . . 0111 ... 1111 1111 1111 1101two = 2,147,483,645ten 0111 ... 1111 1111 1111 1110two = 2,147,483,646ten 0111 ... 1111 1111 1111 1111two = 2,147,483,647ten 1000 ... 0000 0000 0000 0000two = –2,147,483,648ten 1000 ... 0000 0000 0000 0001two = –2,147,483,647ten 1000 ... 0000 0000 0000 0010two = –2,147,483,646ten . . . 1111 ... 1111 1111 1111 1101two = –3ten 1111 ... 1111 1111 1111 1110two = –2ten 1111 ... 1111 1111 1111 1111two = –1ten One zero, 1st bit => >=0 or <0, called sign bit but one negative with no positive –2,147,483,648ten

Two’s Complement Formula Can represent positive and negative numbers in terms of the bit value times a power of 2: d31 x -231 + d30 x 230 + ... + d2 x 22 + d1 x 21 + d0 x 20 Example 1111 1111 1111 1111 1111 1111 1111 1100two = 1x-231 +1x230 +1x229+... +1x22+0x21+0x20 = -231 + 230 + 229 + ... + 22 + 0 + 0 = -2,147,483,648ten + 2,147,483,644ten = -4ten Note: need to specify width: we use 32 bits

Two’s complement shortcut: Negation Invert every 0 to 1 and every 1 to 0, then add 1 to the result Sum of number and its one’s complement must be 111...111two 111...111two= -1ten Let x’ mean the inverted representation of x Then x + x’ = -1  x + x’ + 1 = 0  x’ + 1 = -x Example: -4 to +4 to -4 x : 1111 1111 1111 1111 1111 1111 1111 1100two x’: 0000 0000 0000 0000 0000 0000 0000 0011two +1: 0000 0000 0000 0000 0000 0000 0000 0100two ()’: 1111 1111 1111 1111 1111 1111 1111 1011two +1: 1111 1111 1111 1111 1111 1111 1111 1100two

Signed vs. Unsigned Numbers C declaration int Declares a signed number Uses two’s complement C declaration unsigned int Declares a unsigned number Treats 32-bit number as unsigned integer, so most significant bit is part of the number, not a sign bit

Signed v. Unsigned Comparisons X = 1111 1111 1111 1111 1111 1111 1111 1100two Y = 0011 1011 1001 1010 1000 1010 0000 0000two Is X > Y? unsigned: YES signed: NO Converting to decimal to check Signed comparison: -4ten < 1,000,000,000ten? Unsigned comparison: -4,294,967,292ten < 1,000,000,000ten?

Numbers are stored at addresses Memory is a place to store bits A word is a fixed number of bits (eg, 32) at an address also fixed no. of bits Addresses are naturally represented as unsigned numbers 00000 01110 101101100110 11111 = 2k - 1

Binary bit patterns above are simply representatives of numbers What if too big? Binary bit patterns above are simply representatives of numbers Numbers really have an infinite number of digits with almost all being zero except for a few of the rightmost digits Just don’t normally show leading zeros If result of add (or -,*/) cannot be represented by these rightmost HW bits, overflow is said to have occurred 00000 00001 00010 11111 11110

Two’s comp. shortcut: Sign extension Convert 2’s complement number using n bits to more than n bits Simply replicate the most significant bit (sign bit) of smaller to fill new bits 2’s comp. positive number has infinite 0s 2’s comp. negative number has infinite 1s Bit representation hides leading bits; sign extension restores some of them 16-bit -4ten to 32-bit: 1111 1111 1111 1100two 1111 1111 1111 1111 1111 1111 1111 1100two

2’s complement universal in computing: cannot avoid, so learn And in Conclusion... We represent “things” in computers as particular bit patterns: N bits =>2N numbers, characters, ... (data) Decimal for human calculations, binary to undertstand computers, hex to understand binary 2’s complement universal in computing: cannot avoid, so learn Computer operations on the representation correspond to real operations on the real thing Overflow: numbers infinite but computers finite, so errors occur