Integers. Dr. Steve Goddard Giving credit where credit is due

Similar documents
Integers Sep 3, 2002

Systems 1. Integers. Unsigned & Twoʼs complement. Addition, negation, multiplication

Topics of this Slideset. CS429: Computer Organization and Architecture. Encoding Integers: Unsigned. C Puzzles. Integers

CS429: Computer Organization and Architecture

Integers. Today. Next time. ! Numeric Encodings! Programming Implications! Basic operations. ! Floats

Integer Arithmetic. CS 347 Lecture 03. January 20, 1998

Page # CISC360. Integers Sep 11, Encoding Integers Unsigned. Encoding Example (Cont.) Topics. Twoʼs Complement. Sign Bit

Bits, Bytes, and Integers August 26, 2009

Systems Programming and Computer Architecture ( )

CS 33. Data Representation, Part 2. CS33 Intro to Computer Systems VII 1 Copyright 2018 Thomas W. Doeppner. All rights reserved.

CS 33. Data Representation, Part 2. CS33 Intro to Computer Systems VIII 1 Copyright 2017 Thomas W. Doeppner. All rights reserved.

Computer Systems CEN591(502) Fall 2011

Bits, Bytes, and Integers

C Puzzles! Taken from old exams. Integers Sep 3, Encoding Integers Unsigned. Encoding Example (Cont.) The course that gives CMU its Zip!

Representa7on of integers: unsigned and signed Conversion, cas7ng Expanding, trunca7ng Addi7on, nega7on, mul7plica7on, shiaing

Bits, Bytes, and Integers Part 2

CS140 Lecture 08: Data Representation: Bits and Ints. John Magee 13 February 2017

Carnegie Mellon. Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition

Representing and Manipulating Integers. Jo, Heeseung

Page 1 CISC360. Encoding Integers Unsigned. Integers Sep 8, Numeric Ranges. Encoding Example (Cont.)

CS 270: Computer Organization. Integer Arithmetic Operations

Lecture 5-6: Bits, Bytes, and Integers

But first, encode deck of cards. Integer Representation. Two possible representations. Two better representations WELLESLEY CS 240 9/8/15

Integer Encoding and Manipulation

Bits, Bytes and Integers Part 1

Arithmetic and Bitwise Operations on Binary Data

Foundations of Computer Systems

Jin-Soo Kim Systems Software & Architecture Lab. Seoul National University. Integers. Spring 2019

Arithmetic and Bitwise Operations on Binary Data

Manipulating Integers

Computer Organization: A Programmer's Perspective

C Puzzles The course that gives CMU its Zip! Integer Arithmetic Operations Jan. 25, Unsigned Addition. Visualizing Integer Addition

Representing Integers. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

BITS, BYTES, AND INTEGERS

Bits, Bytes, and Integers

Giving credit where credit is due

ICS Instructor: Aleksandar Kuzmanovic TA: Ionut Trestian Recitation 2

Representing and Manipulating Integers Part I

Giving credit where credit is due

Bits, Bytes, and Integers

Representing Integers

Integers II. CSE 351 Autumn Instructor: Justin Hsia

Integers II. CSE 351 Autumn Instructor: Justin Hsia

Integers II. CSE 351 Autumn 2018

Bits, Bytes and Integers

Bits, Bytes, and Integers. Bits, Bytes, and Integers. The Decimal System and Bases. Everything is bits. Converting from Decimal to Binary

Bits and Bytes: Data Presentation Mohamed Zahran (aka Z)

Integer Representation

Floating Point Puzzles. Lecture 3B Floating Point. IEEE Floating Point. Fractional Binary Numbers. Topics. IEEE Standard 754

System Programming CISC 360. Floating Point September 16, 2008

Systems I. Floating Point. Topics IEEE Floating Point Standard Rounding Floating Point Operations Mathematical properties

Bits, Bytes, and Integer

Chapter 2 Float Point Arithmetic. Real Numbers in Decimal Notation. Real Numbers in Decimal Notation

Foundations of Computer Systems

Floating Point Puzzles The course that gives CMU its Zip! Floating Point Jan 22, IEEE Floating Point. Fractional Binary Numbers.

Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition. Carnegie Mellon

Floating Point. CSE 238/2038/2138: Systems Programming. Instructor: Fatma CORUT ERGİN. Slides adapted from Bryant & O Hallaron s slides

Floating Point Puzzles. Lecture 3B Floating Point. IEEE Floating Point. Fractional Binary Numbers. Topics. IEEE Standard 754

Floating Point January 24, 2008

Floating Point : Introduction to Computer Systems 4 th Lecture, May 25, Instructor: Brian Railing. Carnegie Mellon

Bitwise Data Manipulation. Bitwise operations More on integers

CS429: Computer Organization and Architecture

CS367 Test 1 Review Guide

Floating-Point Data Representation and Manipulation 198:231 Introduction to Computer Organization Lecture 3

Integer Representation Floating point Representation Other data types

Module 2: Computer Arithmetic

Simple Data Types in C. Alan L. Cox

The course that gives CMU its Zip! Floating Point Arithmetic Feb 17, 2000

Today: Floating Point. Floating Point. Fractional Binary Numbers. Fractional binary numbers. bi bi 1 b2 b1 b0 b 1 b 2 b 3 b j

Programming in C++ 5. Integral data types

Floating point. Today. IEEE Floating Point Standard Rounding Floating Point Operations Mathematical properties Next time.

Data Representation Floating Point

Floating Point Numbers

Floating Point Numbers

CHW 261: Logic Design

Chapter 4. Operations on Data

Lecture 8: Addition, Multiplication & Division

COMP 122/L Lecture 2. Kyle Dewey

Bits, Bytes, and Integers. Data Representa+on: Base- 2 number representa+on. Binary Representa+ons. Encoding Byte Values. Example Data Representa+ons

Floating Point (with contributions from Dr. Bin Ren, William & Mary Computer Science)

Arithmetic Processing

Data Representation Floating Point

Kinds Of Data CHAPTER 3 DATA REPRESENTATION. Numbers Are Different! Positional Number Systems. Text. Numbers. Other

Computer Architecture and System Software Lecture 02: Overview of Computer Systems & Start of Chapter 2

CS:APP Web Aside DATA:TNEG: Bit-Level Representation of Two s Complement Negation

Computer Organization: A Programmer's Perspective

CO212 Lecture 10: Arithmetic & Logical Unit

Semester Transition Point. EE 109 Unit 11 Binary Arithmetic. Binary Arithmetic ARITHMETIC

Floating point. Today! IEEE Floating Point Standard! Rounding! Floating Point Operations! Mathematical properties. Next time. !

Module 2 - Part 2 DATA TYPES AND EXPRESSIONS 1/15/19 CSE 1321 MODULE 2 1

COMP2611: Computer Organization. Data Representation

CS 107 Lecture 3: Integer Representations

CS 261 Fall Mike Lam, Professor Integer Encodings

Le L c e t c ur u e e 2 To T p o i p c i s c t o o b e b e co c v o e v r e ed e Variables Operators

Digital Arithmetic. Digital Arithmetic: Operations and Circuits Dr. Farahmand

CS61B Lecture #14: Integers. Last modified: Wed Sep 27 15:44: CS61B: Lecture #14 1

REMEMBER TO REGISTER FOR THE EXAM.

Floating Point. CSE 351 Autumn Instructor: Justin Hsia

Computer Organization & Systems Exam I Example Questions

CS 64 Week 1 Lecture 1. Kyle Dewey

Transcription:

CSCE 23J Computer Organization Integers Dr. Steve Goddard goddard@cse.unl.edu http://cse.unl.edu/~goddard/courses/csce23j Giving credit where credit is due Most of slides for this lecture are based on slides created by Drs. Bryant and O Hallaron, Carnegie Mellon University. I have modified them and added new slides. 2 Page 1

Topics Numeric Encodings Unsigned & Two s complement Programming Implications C promotion rules Basic operations Addition, negation, multiplication Programming Implications Consequences of overflow Using shifts to perform power-of-2 multiply/divide 3 C Puzzles Taken from old exams Assume machine with 32 bit word size, two s complement integers For each of the following C expressions, either: Argue that is true for all argument values Give example where not true Initialization int x = foo(); int y = bar(); unsigned ux = x; unsigned uy = y; x < ((x*2) < ) ux >= x & 7 == 7 (x<<3) < ux > -1 x > y -x < -y x * x >= x > && y > x + y > x >= -x <= x <= -x >= 4 Page 2

Encoding Integers Unsigned Two s Complement w 1 B2U(X) = x i 2 i i= w 2 B2T(X) = x w 1 2 w 1 + x i 2 i i= short int x = 15213; short int y = -15213; C short 2 bytes long Sign Bit Sign Bit Decimal Hex Binary x 15213 3B 6D 11111 11111 y -15213 C4 93 111 1111 For 2 s complement, most significant bit indicates sign for nonnegative 1 for negative 5 Encoding Example (Cont.) x = 15213: 11111 11111 y = -15213: 111 1111 Weight 15213-15213 1 1 1 1 1 2 1 2 4 1 4 8 1 8 16 1 16 32 1 32 64 1 64 128 1 128 256 1 256 512 1 512 124 1 124 248 1 248 496 1 496 8192 1 8192 16384 1 16384-32768 1-32768 Sum 15213-15213 6 Page 3

Numeric Ranges Unsigned Values UMin = UMax = 2 w 1 111 1 Values for W = 16 Two s Complement Values TMin = 2 w 1 1 TMax = 2 w 1 1 11 1 Other Values Minus 1 111 1 Decimal Hex Binary UMax 65535 FF FF 11111111 11111111 TMax 32767 7F FF 1111111 11111111 TMin -32768 8 1-1 -1 FF FF 11111111 11111111 7 Values for Different Word Sizes W 8 16 32 64 UMax 255 65,535 4,294,967,295 18,446,744,73,79,551,615 TMax 127 32,767 2,147,483,647 9,223,372,36,854,775,87 TMin -128-32,768-2,147,483,648-9,223,372,36,854,775,88 Observations TMin = TMax + 1 Asymmetric range UMax = 2 * TMax + 1 C Programming #include <limits.h> K&R App. B11 Declares constants, e.g., ULONG_MAX LONG_MAX LONG_MIN Values platform-specific 8 Page 4

Unsigned & Signed Numeric Values X B2U(X) B2T(X) 1 1 1 1 2 2 11 3 3 1 4 4 11 5 5 11 6 6 111 7 7 1 8 8 11 9 7 11 1 6 111 11 5 11 12 4 111 13 3 111 14 2 1111 15 1 Equivalence Same encodings for nonnegative values Uniqueness Every bit pattern represents unique integer value Each representable integer has unique bit encoding Can Invert Mappings U2B(x) = B2U -1 (x) Bit pattern for unsigned integer T2B(x) = B2T -1 (x) Bit pattern for two s comp integer 9 Casting Signed to Unsigned C Allows Conversions from Signed to Unsigned short int x = 15213; unsigned short int ux = (unsigned short) x; short int y = -15213; unsigned short int uy = (unsigned short) y; Resulting Value No change in bit representation Nonnegative values unchanged ux = 15213 Negative values change into (large) positive values uy = 5323 1 Page 5

Relation between Signed & Unsigned Two s Complement x T2B T2U X B2U Unsigned ux Maintain Same Bit Pattern - w 1 ux + + + + + + x - + + + + + +2 w 1 2 w 1 = 2*2 w 1 = 2 w ux = x x x + 2 w x < 11 Relation Between Signed & Unsigned Weight -15213 5323 1 1 1 1 1 2 1 2 1 2 4 8 16 1 16 1 16 32 64 128 1 128 1 128 256 512 124 1 124 1 124 248 496 8192 16384 1 16384 1 16384 32768 1-32768 1 32768 Sum -15213 5323 uy = y + 2 * 32768 = y + 65536 12 Page 6

Signed vs. Unsigned in C Constants By default are considered to be signed integers Unsigned if have U as suffix U, 4294967259U Casting Explicit casting between signed & unsigned same as U2T and T2U int tx, ty; unsigned ux, uy; tx = (int) ux; uy = (unsigned) ty; Implicit casting also occurs via assignments and procedure calls tx = ux; uy = ty; 13 Casting Surprises Expression Evaluation If mix unsigned and signed in single expression, signed values implicitly cast to unsigned Including comparison operations <, >, ==, <=, >= Examples for W = 32 Constant 1 Constant 2 Relation Evaluation U == unsigned -1 < signed -1 U > unsigned 2147483647-2147483648 > signed 2147483647U -2147483648 < unsigned -1-2 > signed (unsigned) -1-2 > unsigned 2147483647 2147483648U < unsigned 2147483647 (int) 2147483648U > signed 14 Page 7

Explanation of Casting Surprises 2 s Comp. Unsigned Ordering Inversion Negative Big Positive UMax UMax 1 TMax TMax + 1 TMax Unsigned Range 2 s Comp. Range 1 2 TMin 15 Sign Extension Task: Rule: Given w-bit signed integer x Convert it to w+k-bit integer with same value Make k copies of sign bit: X = x w 1,, x w 1, x w 1, x w 2,, x k copies of MSB X w X k w 16 Page 8

Sign Extension Example short int x = 15213; int ix = (int) x; short int y = -15213; int iy = (int) y; Decimal Hex Binary x 15213 3B 6D 11111 11111 ix 15213 3B 6D 11111 11111 y -15213 C4 93 111 1111 iy -15213 FF FF C4 93 11111111 11111111 111 1111 Converting from smaller to larger integer data type C automatically performs sign extension 17 Justification For Sign Extension Prove Correctness by Induction on k Induction Step: extending by single bit maintains value w X - X - + w+1 Key observation: 2 w 1 = 2 w +2 w 1 Look at weight of upper bits: X 2 w 1 x w 1 X 2 w x w 1 + 2 w 1 x w 1 = 2 w 1 x w 1 18 Page 9

Why Should I Use Unsigned? Don t Use Just Because Number Nonzero C compilers on some machines generate less efficient code unsigned i; for (i = 1; i < cnt; i++) a[i] += a[i-1]; Easy to make mistakes for (i = cnt-2; i >= ; i--) a[i] += a[i+1]; Do Use When Performing Modular Arithmetic Multiprecision arithmetic Other esoteric stuff Do Use When Need Extra Bit s Worth of Range Working right up to limit of word size 19 Negating with Complement & Increment Claim: Following Holds for 2 s Complement ~x + 1 == -x Complement Observation: ~x + x == 1111 11 2 == -1 + x ~x 1 1 1 1 1 1 1 1 Increment ~x + x + (-x + 1) == -1 + (-x + 1) ~x + 1 == -x Warning: Be cautious treating int s as integers OK here -1 1 1 1 1 1 1 1 1 2 Page 1

Comp. & Incr. Examples x = 15213 Decimal Hex Binary x 15213 3B 6D 11111 11111 ~x -15214 C4 92 111 111 ~x+1-15213 C4 93 111 1111 y -15213 C4 93 111 1111 Decimal Hex Binary ~ -1 FF FF 11111111 11111111 ~+1 21 Unsigned Addition Operands: w bits True Sum: w+1 bits u + v u + v Discard Carry: w bits UAdd w (u, v) Standard Addition Function Ignores carry output Implements Modular Arithmetic s = UAdd w (u, v) = u + v mod 2 w UAdd w (u,v) = u + v u + v 2 w u + v < 2 w u + v 2 w 22 Page 11

Visualizing Integer Addition Integer Addition 4-bit integers u, v Compute true sum Add 4 (u, v) Values increase linearly with u and v Forms planar surface 32 28 24 2 16 12 8 4 2 u 4 6 8 Add 4 (u, v) Integer Addition 2 1 12 14 4 6 14 12 1 8 v 23 Visualizing Unsigned Addition Wraps Around If true sum 2 w At most once UAdd 4 (u, v) Overflow True Sum 2 w+1 Overflow 16 14 12 1 2 w Modular Sum 8 6 4 2 2 u 4 6 8 1 12 14 2 4 6 8 14 12 1 v 24 Page 12

Mathematical Properties Modular Addition Forms an Abelian Group Closed under addition UAdd w (u, v) 2 w 1 Commutative UAdd w (u, v) = UAdd w (v, u) Associative UAdd w (t, UAdd w (u, v)) = UAdd w (UAdd w (t, u ), v) is additive identity UAdd w (u, ) = u Every element has additive inverse Let UComp w (u ) = 2 w u UAdd w (u, UComp w (u )) = 25 Two s Complement Addition Operands: w bits True Sum: w+1 bits u + v u + v Discard Carry: w bits TAdd w (u, v) TAdd and UAdd have Identical Bit-Level Behavior Signed vs. unsigned addition in C: int s, t, u, v; s = (int) ((unsigned) u + (unsigned) v); t = u + v Will give s == t 26 Page 13

Characterizing TAdd Functionality > v < True sum requires w+1 bits Drop off MSB Treat remaining bits as 2 s comp. integer TAdd(u, v) NegOver < > u PosOver 111 1 1 1 1 1 TAdd w (u,v) = True Sum 2 w 1 2 w 1 2 w 1 2 w u + v + 2 w 1 u + v u + v 2 w 1 PosOver NegOver TAdd Result u + v < TMin w 11 1 1 (NegOver) TMin w u + v TMax w TMax w < u + v (PosOver) 27 Visualizing 2 s Comp. Addition NegOver Values 4-bit two s comp. Range from -8 to +7 TAdd 4 (u, v) Wraps Around If sum 2 w 1 Becomes negative At most once If sum < 2 w 1 Becomes positive At most once 8 6 4 2-2 -4-6 -8-8 -6-4 u -2 2 4 6-8 -6-4 -2 6 4 2 v PosOver 28 Page 14

Detecting 2 s Comp. Overflow Task Claim Given s = TAdd w (u, v) Determine if s = Add w (u, v) Example int s, u, v; s = u + v; 2 w 1 2 w 1 Overflow iff either: u, v <, s (NegOver) u, v, s < (PosOver) ovf = (u< == v<) && (u<!= s<); PosOver NegOver 29 Mathematical Properties of TAdd Isomorphic Algebra to UAdd TAdd w (u, v) = U2T(UAdd w (T2U(u ), T2U(v))) Since both have identical bit patterns Two s Complement Under TAdd Forms a Group Closed, Commutative, Associative, is additive identity Every element has additive inverse Let TComp w (u ) = U2T(UComp w (T2U(u )) TAdd w (u, TComp w (u )) = TComp w (u) = u TMin w u TMin w u = TMin w 3 Page 15

Multiplication Computing Exact Product of w-bit numbers x, y Either signed or unsigned Ranges Unsigned: x * y (2 w 1) 2 = 2 2w 2 w+1 + 1 Up to 2w bits Two s complement min: x * y ( 2 w 1 )*(2 w 1 1) = 2 2w 2 + 2 w 1 Up to 2w 1 bits Two s complement max: x * y ( 2 w 1 ) 2 = 2 2w 2 Up to 2w bits, but only for (TMin w ) 2 Maintaining Exact Results Would need to keep expanding word size with each product computed Done in software by arbitrary precision arithmetic packages 31 Unsigned Multiplication in C Operands: w bits * u v True Product: 2*w bits u v Discard w bits: w bits UMult w (u, v) Standard Multiplication Function Ignores high order w bits Implements Modular Arithmetic UMult w (u, v) = u v mod 2 w 32 Page 16

Unsigned vs. Signed Multiplication Unsigned Multiplication unsigned ux = (unsigned) x; unsigned uy = (unsigned) y; unsigned up = ux * uy Truncates product to w-bit number up = UMult w (ux, uy) Modular arithmetic: up = ux uy mod 2 w Two s Complement Multiplication int x, y; int p = x * y; Compute exact product of two w-bit numbers x, y Truncate result to w-bit number p = TMult w (x, y) 33 Unsigned vs. Signed Multiplication Unsigned Multiplication unsigned ux = (unsigned) x; unsigned uy = (unsigned) y; unsigned up = ux * uy Two s Complement Multiplication int x, y; Relation int p = x * y; Signed multiplication gives same bit-level result as unsigned up == (unsigned) p 34 Page 17

Power-of-2 Multiply with Shift Operation u << k gives u * 2 k Both signed and unsigned Operands: w bits * u 2 k k 1 True Product: w+k bits u 2 k Discard k bits: w bits UMult w (u, 2 k ) Examples u << 3 == u * 8 TMult w (u, 2 k ) u << 5 - u << 3 == u * 24 Most machines shift and add much faster than multiply Compiler generates this code automatically 35 Unsigned Power-of-2 Divide with Shift Quotient of Unsigned by Power of 2 u >> k gives u / 2 k Uses logical shift Operands: / u 2 k k 1 Binary Point Division: u / 2 k. Result: u / 2 k Division Computed Hex Binary x 15213 15213 3B 6D 11111 11111 x >> 1 766.5 766 1D B6 1111 11111 x >> 4 95.8125 95 3 B6 11 11111 x >> 8 59.4257813 59 3B 11111 36 Page 18

Signed Power-of-2 Divide with Shift Quotient of Signed by Power of 2 x >> k gives x / 2 k Uses arithmetic shift Rounds wrong direction when u < k x Operands: / 1 2 k Binary Point Division: x / 2 k. Result: RoundDown(x / 2 k ) Division Computed Hex Binary y -15213-15213 C4 93 111 1111 y >> 1-766.5-767 E2 49 1111 111 y >> 4-95.8125-951 FC 49 111111 111 y >> 8-59.4257813-6 FF C4 11111111 111 37 Correct Power-of-2 Divide Quotient of Negative Number by Power of 2 Want x / 2 k (Round Toward ) Compute as (x+2 k -1)/ 2 k In C: (x + (1<<k)-1) >> k Biases dividend toward Case 1: No rounding Dividend: Divisor: / u 2 k k 1 +2 k + 1 1 1 1 1 1 1 1 1 Binary Point u / 2 k 1 1 1 1. 1 1 1 Biasing has no effect 38 Page 19

Correct Power-of-2 Divide (Cont.) Case 2: Rounding Dividend: x k 1 +2 k + 1 1 1 1 1 Incremented by 1 Binary Point Divisor: / 2 k 1 x / 2 k 1 1 1 1. Biasing adds 1 to final result Incremented by 1 39 Properties of Unsigned Arithmetic Unsigned Multiplication with Addition Forms Commutative Ring Addition is commutative group Closed under multiplication UMult w (u, v) 2 w 1 Multiplication Commutative UMult w (u, v) = UMult w (v, u) Multiplication is Associative UMult w (t, UMult w (u, v)) = UMult w (UMult w (t, u ), v) 1 is multiplicative identity UMult w (u, 1) = u Multiplication distributes over addtion UMult w (t, UAdd w (u, v)) = UAdd w (UMult w (t, u ), UMult w (t, v)) 4 Page 2

Properties of Two s Comp. Arithmetic Isomorphic Algebras Unsigned multiplication and addition Truncating to w bits Two s complement multiplication and addition Truncating to w bits Both Form Rings Isomorphic to ring of integers mod 2 w Comparison to Integer Arithmetic Both are rings Integers obey ordering properties, e.g., u > u + v > v u >, v > u v > These properties are not obeyed by two s comp. arithmetic TMax + 1 == TMin 15213 * 3426 == -13 (16-bit words) 41 C Puzzle Answers Assume machine with 32 bit word size, two s comp. integers TMin makes a good counterexample in many cases x < ((x*2) < ) False: TMin ux >= True: = UMin x & 7 == 7 (x<<3) < True: x 1 = 1 ux > -1 False: x > y -x < -y False: -1, TMin x * x >= False: 3426 x > && y > x + y > False: TMax, TMax x >= -x <= True: TMax < x <= -x >= False: TMin 42 Page 21