inst eecs berkeley edu cs61c CS61C Machine Structures Lecture 2 Introduction To C 2005 06 21 Andy Carle CS 61C L2 Introduction to C 1 A Carle Summer 2005 UCB Review Two s Complement CS 61C L2 Introduction to C 2 A Carle Summer 2005 UCB 2 s Complement Properties As with sign and magnitude leading 0s positive leading 1s negative 000000 xxx is 0 111111 xxx is 0 except 1 1111 is 1 not 0 as in sign mag Only 1 Zero CS 61C L2 Introduction to C 3 A Carle Summer 2005 UCB 2 s Complement Number line N 5 00000 00001 N 1 non 2 11111 negatives 11110 00010 1 0 1 11101 2 2 2N 1 negatives 3 11100 4 one zero how many positives 15 16 15 10001 10000 01111 CS 61C L2 Introduction to C 4 A Carle Summer 2005 UCB 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 1101two 1x 23 1x22 0x21 1x20 23 22 0 20 8 4 0 1 8 5 3ten CS 61C L2 Introduction to C 5 A Carle Summer 2005 UCB Two s Complement shortcut Negation Change every 0 to 1 and 1 to 0 invert or complement then add 1 to the result Proof Sum of number and its one s complement must be 111 111two However 111 111two 1ten Let x one s complement representation of x Then x x 1 x x 1 0 x 1 x Example 3 to 3 to 3 x 1111 1111 1111 1111 1111 1111 1111 1101two x 0000 0000 0000 0000 0000 0000 0000 0010two 1 0000 0000 0000 0000 0000 0000 0000 0011two 1111 1111 1111 1111 1111 1111 1111 1100two 1 1111 1111 1111 1111 1111 1111 1111 1101two Check out www cs berkeley edu dsw twos complement html CS 61C L2 Introduction to C 6 A Carle Summer 2005 UCB Two s comp shortcut Sign extension Convert 2 s complement number rep 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 Binary 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 CS 61C L2 Introduction to C 7 A Carle Summer 2005 UCB What if too big Binary bit patterns above are simply representatives of numbers Strictly speaking they are called numerals Numbers really have an number of digits with almost all being same 00 0 or 11 1 except for a few of the rightmost digits Just don t normally show leading digits If result of add or cannot be represented by these rightmost HW bits overflow is said to have occurred 00000 00001 00010 11110 11111 unsigned CS 61C L2 Introduction to C 8 A Carle Summer 2005 UCB Number Summary We represent things in computers as particular bit patterns N bits 2N Decimal for human calculations binary for computers hex to write binary more easily 1 s complement mostly abandoned 00000 00001 01111 10000 11110 11111 2 s complement universal in computing cannot avoid so learn 00000 00001 01111 10000 11110 11111 Overflow numbers computers finite errors CS 61C L2 Introduction to C 9 A Carle Summer 2005 UCB Preview Signed vs Unsigned Variables Java just declares integers int Uses two s complement C has declaration int also Declares variable as a signed integer Uses two s complement Also C declaration unsigned int Declares a unsigned integer Treats 32 bit number as unsigned integer so most significant bit is part of the number not a sign bit CS 61C L2 Introduction to C 10 A Carle Summer 2005 UCB Big Idea Next Topic Numbers can Be Anything CS 61C L2 Introduction to C 11 A Carle Summer 2005 UCB BIG IDEA Bits can represent anything REMEMBER N digits in base B BN values For binary in particular N bits 2N values Characters 26 letters 5 bits 25 32 upper lower case punctuation 7 bits in 8 ASCII standard code to cover all the world s languages 16 bits Unicode Logical values 0 False 1 True colors Ex Red 00 Green 01 Blue 11 locations addresses commands CS 61C L2 Introduction to C 12 A Carle Summer 2005 UCB Example Numbers represented in memory 0xdeadbeef 11111 Memory is a place to store bits 10110 A word is a fixed number of bits eg 32 at an address 00000 CS 61C L2 Introduction to C 13 Addresses are naturally represented as unsigned numbers in C A Carle Summer 2005 UCB Moving Along Next Topic Intro to C CS 61C L2 Introduction to C 14 A Carle Summer 2005 UCB Disclaimer Important You will not learn how to fully code in C in these lectures You ll still need your C reference for this course K R is a great reference But check online for more sources JAVA in a Nutshell O Reilly Chapter 2 How Java Differs from C CS 61C L2 Introduction to C 15 A Carle Summer 2005 UCB Compilation Overview C compilers take C and convert it into an architecture specific machine code string of 1s and 0s Unlike Java which converts to architecture independent bytecode Unlike most Scheme environments which interpret the code Generally a 2 part process of compiling c files to o files then linking the o files into executables CS 61C L2 Introduction to C 16 A Carle Summer 2005 UCB Compilation Advantages Great run time performance generally much faster than Scheme or Java for comparable code because it optimizes for a given architecture OK compilation time enhancements in compilation procedure Makefiles allow only modified files to be recompiled CS 61C L2 Introduction to C 17 A Carle Summer 2005 UCB Compilation Disadvantages All compiled files including the executable are architecture specific depending on both the CPU type and the operating system Executable must be rebuilt on each new system Called porting your code to a new architecture The change compile run repeat iteration cycle is slow CS 61C L2 Introduction to C 18 A Carle Summer 2005 UCB C vs Java Overview 1 2 Java C Object oriented OOP No built in object abstraction Data separate from methods Methods Functions Class libraries of data structures C libraries are lower level Automatic memory management Manual memory management Pointers CS 61C L2 Introduction to C 19 A Carle Summer 2005 UCB C vs Java Overview 2 2 Java C High memory overhead from class libraries Low memory overhead Relatively Slow Relatively Fast Arrays initialize to zero Arrays initialize to garbage Syntax Syntax comment comment System out print CS 61C L2 Introduction to C 20 comment printf A Carle Summer 2005 UCB C Syntax Variable Declarations Very similar to Java but with a few minor but important differences All variable declarations must go before they are used at the beginning of the …
View Full Document
Unlocking...