Lecture Objectives: 1)Define the terms least significant bit and most significant bit. 2)Explain how unsigned integer numbers are represented in memory 3)Understand the limitations of using sign and magnitude to represent signed integer numbers 4)Explain how signed integer numbers are represented in memory using twos complement notation. 5)Convert twos complement numbers into decimal. 6)Convert decimal numbers into twos complement format. 7)Explain the concept of sign extension 8)Convert a binary number into hexadecimal 9)Explain how instructions are represented in memory as machine code
Numeric values can be represented in any base. People commonly use base 10 (decimal). Given a decimal (base 10) number, convert it to binary: 51 ten = ? two -7 ten = ? two CS2710 Computer Organization2
Given a binary number, convert it to decimal format two = ? ten
Processors use each bit of a word to represent a binary digit of a numeric value Consider the integer value 305,419,896 represented with a MIPS 32-bit word: CS2710 Computer Organization4 Bit 0 (LSB) Bit 31 (MSB) In this representation, each bit represents the value x i *2 i, where i is the bit number, and x is either 0 or 1.
Signed numbers: How do we represent negative values (+/-)? First approach – Add a sign bit to the number – 0 indicates positive – 1 indicates negative Example: -11 ten = ? two CS2710 Computer Organization5
Dual zeros: the problem with sign and magnitude == CS2710 Computer Organization6 Sign bit Sign bits were used in early computers, but were soon abandoned. No modern computers use sign bits!
Solution: 2’s complement numbers CS2710 Computer Organization7 Leading 0’s mean positive, leading 1’s mean negative Example for 32 bits: = –1× × … + 1×2 2 +0×2 1 +0×2 0 = –2,147,483, ,147,483,644 = – bits can represent the values –2,147,483,648 to +2,147,483,647 Range: –2 n – 1 to +2 n – 1 – 1
Shortcut: Converting a number into 2’s complement 1.Convert the absolute value of the number into a binary number 2.Complement the bits (1-> 0, 0->1) 3.Add 1 to the value Example: Convert -51 (decimal) to binary using 2’s complement. CS2710 Computer Organization8
Sign extension Representing a number using more bits – Preserve the numeric value Replicate the sign bit to the left – c.f. unsigned values: extend with 0s Examples: 8-bit to 16-bit – +2: => – –2: => CS2710 Computer Organization9
Example Convert -51 to a 16 bit signed binary (base 2) representation based on the 2’s complement value from before CS2710 Computer Organization10
Converting binary to hex (CE1900 review) Hexadecimal – Base 16 – Group binary digits into sets of 4 – Convert each group into a hex digit CS2710 Computer Organization A B C D E F
Example Convert the number to hex Convert the number to hex – What decimal number is this? CS2710 Computer Organization12
Representing Instructions Instructions are represented in binary – Called machine code MIPS instructions (e.g. add $t0, $s1, $s2) – Encoded as 32-bit words – Small number of formats – Regularity in the pattern Register numbers $t0 – $t7 are registers 8 – 15 $t8 – $t9 are registers 24 – 25 $s0 – $s7 are registers 16 – 23 §2.5 Representing Instructions in the Computer
MIPS R[egister]-format Instructions Instruction fields – op: operation code (opcode) – rs: first source register number – rt: second source register number – rd: destination register number – shamt: shift amount (00000 for now) – funct: function code (extends opcode) For add, $t0, $s1, $s2 (see the green card in the textbook) – op = 0 – rs = $s1, register 17 – rt = $s2, register 18 – rd = $t0, register 8 – shamt = 0 – funct = 32 oprsrtrdshamtfunct 6 bits 5 bits
MIPS R-format for the add instruction For add, $t0, $s1, $s2 – op = 0 (for add) – rs = $s1, register 17 – rt = $s2, register 18 – rd = $t0, register 8 – shamt = 0 (for add) – funct = 32 (for add) oprsrtrdshamtfunct 6 bits 5 bits bits 5 bits bits 5 bits Q1: why 5 bits for register values??? Q2: What is the hex equivalent? add instruction syntax: add rd, rs, rt (See the green card in the textbook)
MIPS I[mmediate]-format Instructions Instruction fields – op: operation code (opcode) – rs: first source register number – rt: second source register number – Last field: constant value or 16-bit base address offset For addi, $t0, $s1, 100 # t0 = s – op = 8 – rt = $t0, register 8 – rs = $s1, register 17 – Constant =100 oprsrtConstant or address 6 bits5 bits 16 bits addi instruction syntax: addi rt, rs, value (sign-extended) (See the green card in the textbook) bits5 bits 16 bits
MIPS I[mmediate]-format Instructions Instruction fields – op: operation code (opcode) – rs: first source register number – rt: second source register number – Last field: constant value or 16-bit base address offset For lw $t0, 1200($t1) #load value from memory ref’d by t2 into t1 – op = 35 – rt = $t0, register 8 – rs = $t1, register 9 – Address offset=1200 (bytes) oprsrtConstant or address 6 bits5 bits 16 bits lw instruction syntax: lw rt, (offset)rs, (See the green card in the textbook) bits5 bits 16 bits