Under the Hood: Data Representation. Computer Science 104 Lecture 2

Similar documents
CPS 104 Computer Organization and Programming Lecture-2 : Data representations,

Chapter 2 Bits, Data Types, and Operations

Number Systems for Computers. Outline of Introduction. Binary, Octal and Hexadecimal numbers. Issues for Binary Representation of Numbers

Chapter 2 Bits, Data Types, and Operations

Chapter 2 Bits, Data Types, and Operations

Number Representations

Fundamentals of Programming (C)

Numbers and Computers. Debdeep Mukhopadhyay Assistant Professor Dept of Computer Sc and Engg IIT Madras

Chapter 2 Bits, Data Types, and Operations

Chapter 2 Bits, Data Types, and Operations

Data Representation and Binary Arithmetic. Lecture 2

CS/ECE 252: INTRODUCTION TO COMPUTER ENGINEERING UNIVERSITY OF WISCONSIN MADISON

Chapter 2 Number System

CS/ECE 252: INTRODUCTION TO COMPUTER ENGINEERING UNIVERSITY OF WISCONSIN MADISON

Chapter 3. Information Representation

Exercises Software Development I. 03 Data Representation. Data types, range of values, internal format, literals. October 22nd, 2014

ECE 250 / CS 250 Computer Architecture. C to Binary: Memory & Data Representations. Benjamin Lee

The Binary Number System

Number Systems Base r

1.1. INTRODUCTION 1.2. NUMBER SYSTEMS

plc numbers Encoded values; BCD and ASCII Error detection; parity, gray code and checksums

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 02, FALL 2012

Bits and Bytes. Data Representation. A binary digit or bit has a value of either 0 or 1; these are the values we can store in hardware devices.

CMSC 313 Lecture 03 Multiple-byte data big-endian vs little-endian sign extension Multiplication and division Floating point formats Character Codes

Number System (Different Ways To Say How Many) Fall 2016

EE 109 Unit 3. Analog vs. Digital. Analog vs. Digital. Binary Representation Systems ANALOG VS. DIGITAL

Binary Numbers. The Basics. Base 10 Number. What is a Number? = Binary Number Example. Binary Number Example

COMP2611: Computer Organization. Data Representation

Fundamentals of Programming

CPSC 301: Computing in the Life Sciences Lecture Notes 16: Data Representation

Positional Number System

Number Systems. Decimal numbers. Binary numbers. Chapter 1 <1> 8's column. 1000's column. 2's column. 4's column

Unit 3. Analog vs. Digital. Analog vs. Digital ANALOG VS. DIGITAL. Binary Representation

CS341 *** TURN OFF ALL CELLPHONES *** Practice NAME

DATA REPRESENTATION. Data Types. Complements. Fixed Point Representations. Floating Point Representations. Other Binary Codes. Error Detection Codes

ASSIGNMENT 5 TIPS AND TRICKS

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 02, SPRING 2013

Oberon Data Types. Matteo Corti. December 5, 2001

Simple Data Types in C. Alan L. Cox

EE 109 Unit 2. Analog vs. Digital. Analog vs. Digital. Binary Representation Systems ANALOG VS. DIGITAL

3.1. Unit 3. Binary Representation

CSE-1520R Test #1. The exam is closed book, closed notes, and no aids such as calculators, cellphones, etc.

Fundamental Data Types

CSE-1520R Test #1. The exam is closed book, closed notes, and no aids such as calculators, cellphones, etc.

Number Systems II MA1S1. Tristan McLoughlin. November 30, 2013

Data Representa5on. CSC 2400: Computer Systems. What kinds of data do we need to represent?

Data Representa5on. CSC 2400: Computer Systems. What kinds of data do we need to represent?

Chapter 7. Binary, octal and hexadecimal numbers

EE 109 Unit 2. Binary Representation Systems

CSE 30 Spring 2006 Final Exam

Do not start the test until instructed to do so!

CMSC 313 COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE PROGRAMMING LECTURE 02, FALL 2012

Do not start the test until instructed to do so!

M1 Computers and Data

10.1. Unit 10. Signed Representation Systems Binary Arithmetic

CSE 30 Fall 2013 Final Exam

Source coding and compression

Introduction to Computers and Programming. Numeric Values

Inf2C - Computer Systems Lecture 2 Data Representation

Do not start the test until instructed to do so!

CSE 30 Winter 2014 Final Exam

5/17/2009. Digitizing Discrete Information. Ordering Symbols. Analog vs. Digital

1010 2?= ?= CS 64 Lecture 2 Data Representation. Decimal Numbers: Base 10. Reading: FLD Digits: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

IT 1204 Section 2.0. Data Representation and Arithmetic. 2009, University of Colombo School of Computing 1

CSE 30 Fall 2006 Final Exam

ECE 2020B Fundamentals of Digital Design Spring problems, 6 pages Exam Two Solutions 26 February 2014

CSE 30 Spring 2007 Final Exam

Floating Point Numbers. Lecture 9 CAP

CSE 30 Fall 2007 Final Exam

2a. Codes and number systems (continued) How to get the binary representation of an integer: special case of application of the inverse Horner scheme

CSE 30 Fall 2012 Final Exam

CSE 30 Winter 2009 Final Exam

CS101 Lecture 04: Binary Arithmetic

l l l l l l l Base 2; each digit is 0 or 1 l Each bit in place i has value 2 i l Binary representation is used in computers

Chapter 4: Data Representations

Unit 3, Lesson 2 Data Types, Arithmetic,Variables, Input, Constants, & Library Functions. Mr. Dave Clausen La Cañada High School

Lecture (09) x86 programming 8

Topic Notes: Bits and Bytes and Numbers

Chapter 3: Arithmetic for Computers

Number Systems. Binary Numbers. Appendix. Decimal notation represents numbers as powers of 10, for example

UNIT 2 NUMBER SYSTEM AND PROGRAMMING LANGUAGES

CS61c Midterm Review (fa06) Number representation and Floating points From your friendly reader

3.5 Floating Point: Overview

Chapter 8. Characters and Strings

EXPERIMENT 8: Introduction to Universal Serial Asynchronous Receive Transmit (USART)

15213 Recitation 2: Floating Point

Introduction to Computer Engineering. CS/ECE 252, Spring 2017 Rahul Nayar Computer Sciences Department University of Wisconsin Madison

EXPERIMENT 7: Introduction to Universal Serial Asynchronous Receive Transmit (USART)

Rui Wang, Assistant professor Dept. of Information and Communication Tongji University.

Topic Notes: Bits and Bytes and Numbers

Computer Science 324 Computer Architecture Mount Holyoke College Fall Topic Notes: Bits and Bytes and Numbers

Number System. Introduction. Decimal Numbers

CS 265. Computer Architecture. Wei Lu, Ph.D., P.Eng.

DRAM uses a single capacitor to store and a transistor to select. SRAM typically uses 6 transistors.

Data Representation. DRAM uses a single capacitor to store and a transistor to select. SRAM typically uses 6 transistors.

Integer Representation Floating point Representation Other data types

Integers. N = sum (b i * 2 i ) where b i = 0 or 1. This is called unsigned binary representation. i = 31. i = 0

Data Representation 1

Floating Point Arithmetic

Experiment 3. TITLE Optional: Write here the Title of your program.model SMALL This directive defines the memory model used in the program.

Transcription:

Under the Hood: Data Representation Computer Science 104 Lecture 2

Admin Piazza, Sakai Up Everyone should have access Homework 1 Posted Due Feb 6 PDF or Plain Text Only: No Word or RTF Recommended: Learn LaTeX 2

Last Time on CS104. Who can remind us what we talked about last time? Compsci 104 3

Last Time on CS104. Who can remind us what we talked about last time? Course policies Why to take this course Everything is a number it is all 1s and 0s Number representations Decimal Binary Hexadecimal ( hex ) Octal Compsci 104 4

Converting Numbers Hex to Binary: Expand each hex digit to 4 bits: 0xFC1 = 111111000001 Binary to Hex: Group up 4 bits into a digit: 11010110011 = 0x6B3 Binary to Decimal: Add up values of bits with 1: 1001101 = 64 + 8 + 4 + 1 = 77 5

Converting Numbers Converting Decimal to Binary Suppose I want to convert 4872 to binary How would I do this?. Think about it for a second 6

Converting Numbers Converting Decimal to Binary Suppose I want to convert 4872 to binary How would I do this?. Think about it for a second 4872-4096 776 4096 1 2048 1024 512 256 128 64 32 16 8 4 2 1 7

Converting Numbers Converting Decimal to Binary Suppose I want to convert 4872 to binary How would I do this?. Think about it for a second 4872-4096 776-512 264 4096 1 2048 0 1024 0 512 1 256 128 64 32 16 8 4 2 1 8

Converting Numbers Converting Decimal to Binary Suppose I want to convert 4872 to binary How would I do this?. Think about it for a second 4872-4096 776-512 264-256 8 4096 1 2048 0 1024 0 512 1 256 1 128 64 32 16 8 4 2 1 9

Converting Numbers Converting Decimal to Binary Suppose I want to convert 4872 to binary How would I do this?. Think about it for a second 4872-4096 776-512 264-256 8-8 0 4096 1 2048 0 1024 0 512 1 256 1 128 0 64 0 32 0 16 0 8 1 4 2 1 10

Converting Numbers Converting Decimal to Binary Suppose I want to convert 4872 to binary How would I do this?. Think about it for a second 4872-4096 776-512 264-256 8-8 0 4096 1 2048 0 1024 0 512 1 256 1 128 0 64 0 32 0 16 0 8 1 4 0 2 0 1 0 11

What about negative numbers? This works great for N >= 0 But what about negative numbers? Sometimes we don t need them: unsigned number Sometimes kind of important: signed number Many options: Sign magnitude 1 s complement 2 s complement Biased 12

Sign Magnitude Use leftmost bit for + (0) or (1): 6-bit example (1 sign bit + 5 magnitude bits): +17 = 010001-17 = 110001 Pros: Conceptually simple Easy to convert Cons: Harder to compute (add, subtract, etc) with Positive and negative 0: 000000 and 100000 13

1 s Complement Representation for Integers Use largest positive binary numbers to represent negative numbers To negate a number, invert ( not ) each bit: 0->1 1->0 Cons: Still two 0s Still hard to compute with 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000-7 1001-6 1010-5 1011-4 1100-3 1101-2 1110-1 1111-0 14

2 s Complement Representation for Integers To negated, flip bits, add 1: Pros: 1 s complement + 1 Easy to compute with One representation of 0 Cons: More complex negation Extra negative number (-8) Ubiquitous choice 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 0111 7 1000-8 1001-7 1010-6 1011-5 1100-4 1101-3 1110-2 1111-1 15

Binary Math : Addition Suppose we want to add two numbers: 00011101 + 00101011 How do we do this? 16

Binary Math : Addition Suppose we want to add two numbers: 00011101 695 + 00101011 + 232 How do we do this? Let s revisit decimal addition Think about the process as we do it 17

Binary Math : Addition Suppose we want to add two numbers: 00011101 695 + 00101011 + 232 7 First add one s digit 5+2 = 7 18

Binary Math : Addition Suppose we want to add two numbers: 1 00011101 695 + 00101011 + 232 27 First add one s digit 5+2 = 7 Next add ten s digit 9+3 = 12 (2 carry a 1) 19

Binary Math : Addition Suppose we want to add two numbers: 1 00011101 695 + 00101011 + 232 927 First add one s digit 5+2 = 7 Next add ten s digit 9+3 = 12 (2 carry a 1) Last add hundred s digit 1+6+2 = 9 20

Binary Math : Addition Suppose we want to add two numbers: 00011101 + 00101011 Back to the binary: First add 1 s digit 1+1 =? 21

Binary Math : Addition Suppose we want to add two numbers: 1 00011101 + 00101011 0 Back to the binary: First add 1 s digit 1+1 = 2 (0 carry a 1) 22

Binary Math : Addition Suppose we want to add two numbers: 11 00011101 + 00101011 00 Back to the binary: First add 1 s digit 1+1 = 2 (0 carry a 1) Then 2 s digit: 1+0+1 =2 (0 carry a 1) You all finish it out. 23

Binary Math : Addition Suppose we want to add two numbers: 111111 00011101 = 29 + 00101011 = 43 01001000 = 72 Can check our work in decimal 24

What about this one: Binary Math : Addition 01011101 + 01101011 25

Binary Math : Addition What about this one: 1111111 01011101 = 93 + 01101011 = 107 11001000 = -56 But that can t be right? What do you expect for the answer? What is it in 8-bit signed 2 s complement? 26

Integer Overflow Answer should be 200 Not representable in 8-bit signed representation No right answer Call Integer Overflow Signed addition: CI!= CO of last bit Unsigned addition: CO!= 0 of last bit Real problem in programs SNES SimCity Cheat Can easily imagine more serious cases Awareness can make you better programmer 27

Subtraction 2 s complement makes subtraction easy: Remember: A - B = A + (-B) And: -B = ~B + 1 that means flip bits ( not ) So we just flip the bits and start with CI = 1 Later: No new circuits to subtract (re-use add) 1 0110101 -> 0110101-1010010 + 0101101 28

What About Non-integer Numbers? There are infinitely many real numbers between two integers Many important numbers are real Pi = 3.145 ½ = 0.5 How could we represent these sorts of numbers? Remember, we only have integers Everyone think for a few minutes Feel free to brainstorm with your neighboors 29

Option 1: Fixed point Use normal integers, but (X*2 K ) instead of X Example: 32 bit int, but use X*65536 3.1415926 * 65536 = 205887 0.5 * 65536 = 32768, etc.. Pros: Addition/subtraction just like integers ( free ) Cons: Mul/div require renormalizing (divide by 64K) Range limited (no good rep for large + small) Can be good in specific situations 30

Option 2: Rational Numbers Represent each number as fraction: X / Y X and Y are integers (say 16 bits each) 0.5 = (1,2) 3.1415926 = (31415, 1000) Pros: Represent a lot of numbers Precision in some cases (e.g., 1/3) Cons: Hard to work with Multiple representations for many numbers 31

Can we do better? Think about scientific notation for a second: For example: 6.02 * 10 23 Real number, but comprised of ints: 6 generally only 1 digit here 2 any number here 10 always 10 (base we work in) 23 can be positive or negative Can we do something like this in binary? 32

Option 3: Floating Point How about: +/- X.YYYYYY * 2 +/-N Big numbers: large positive N Small numbers (<1): negative N Numbers near 0: small N This is floating point : most common way 33

IEEE single precision floating point Specific format called IEEE single precision: +/- 1.YYYYY * 2 (N-127) float in Java, C, C++, Assume X is always 1 (save a bit) 1 sign bit (+ = 0, 1 = -) 8 bit biased exponent (do N-127) Implicit 1 before binary point 23-bit mantissa (YYYYY) 34

Binary fractions 1.YYYY has a binary point Like a decimal point but in binary After a decimal point, you have tenths hundredths Thousandths. So after a binary point you have 35

Binary fractions 1.YYYY has a binary point Like a decimal point but in binary After a decimal point, you have Tenths Hundredths Thousandths. So after a binary point you have Halves Quarters Eights. 36

Floating point example Binary fraction example: 101.101 = 4 + 1 + ½ + 1 / 8 = 5.625 For floating point, needs normalization: 1.01101 * 2 2 Sign is +, which = 0 Exponent = 127 + 2 = 129 = 1000 0001 Mantissa = 1.011 0100 0000 0000 0000 0000 31 30 23 22 0 1000 0001 011 0100 0000 0000 0000 0000 0 37

Floating Point Representation Example: What floating-point number is: 0xC1580000? 38

Answer What floating-point number is 0xC1580000? 1100 0001 0101 1000 0000 0000 0000 0000 X = 31 30 23 22 1 1000 0010 101 1000 0000 0000 0000 0000 s E F 0 Sign = 1 which is negtiave Exponent = (128+2)-127 = 3 Mantissa = 1.1011-1.1011x2 3 = -1101.1 = -13.5 39

Trick question How do you represent 0.0? Why is this a trick question? 40

Trick question How do you represent 0.0? Why is this a trick question? 0.0 = 000000000 But need 1.XXXXX representation? 41

Trick question How do you represent 0.0? Why is this a trick question? 0.0 = 000000000 But need 1.XXXXX representation? Exponent of 0 is denormalized Implicit 0. instead of 1. in mantissa Allows 0000.0000 to be 0 Helps with very small numbers near 0 Results in +/- 0 in FP (but they are equal ) 42

Other weird FP numbers Exponent = 1111 1111 also not standard All 0 mantissa: +/- 1/0 = + -1/0 = - Non zero mantissa: Not a Number (NaN) sqrt(-42) = NaN 43

Floating Point Representation Double Precision Floating point: 64-bit representation: 1-bit sign 11-bit (biased) exponent 52-bit fraction (with implicit 1). double in Java, C, C++, S Exp Mantissa 1 11-bit 52 - bit 44

Ints and Floats int x = 1930754307; float f = x; System.out.println(x); x = f; System.out.println(x); Is this Java Legal? 45

Ints and Floats int x = 1930754307; float f = x; System.out.println(x); x = (int) f; System.out.println(x); Is this Java Legal? Java worries you might chop off a fraction Requires a cast Does not worry about f = x why not? 46

Ints and Floats int x = 1930754307; float f = x; System.out.println(x); x = (int) f; System.out.println(x); Program output: 1930754307 1930754304 Why? 47

Ints and Floats int x = 1930754307; float f = x; System.out.println(x); x = (int) f; System.out.println(x); Program output: Hint 1930754307 0x7314f903 1930754304 0x7314f900 Why? 48

Danger: floats cannot hold all ints! Many programmers think: Floats can represent all ints NOT true First summer internship I had: Need some floats and some ints: just use floats! Bug in their code! Other developers shocked as I demonstrated problem Doubles can represent all 32-bit ints (but not all 64-bit ints) S Exp Mantissa 1 11-bit 52 - bit 31 30 Exp 23 22 Mantissa 1 8-bit 23- bit 49 0

What about characters/strings? Many important things stored as strings Your name What is a string? How should we represent strings? 50

ASCII Character Representation Oct. Chr. 000 nul 001 soh 002 stx 003 etx 004 eot 005 enq 006 ack 007 bel 010 bs 011 ht 012 nl 013 vt 014 np 015 cr 016 so 017 si 020 dle 021 dc1 022 dc2 023 dc3 024 dc4 025 nak 026 syn 027 etb 030 can 031 em 032 sub 033 esc 034 fs 035 gs 036 rs 037 us 040 sp 041! 042 " 043 # 044 $ 045 % 046 & 047 ' 050 ( 051 ) 052 * 053 + 054, 055-056. 057 / 060 0 061 1 062 2 063 3 064 4 065 5 066 6 067 7 070 8 071 9 072 : 073 ; 074 < 075 = 076 > 077? 100 @ 101 A 102 B 103 C 104 D 105 E 106 F 107 G 110 H 111 I 112 J 113 K 114 L 115 M 116 N 117 O 120 P 121 Q 122 R 123 S 124 T 125 U 126 V 127 W 130 X 131 Y 132 Z 133 [ 134 \ 135 ] 136 ^ 137 _ 140 ` 141 a 142 b 143 c 144 d 145 e 146 f 147 g 150 h 151 i 152 j 153 k 154 l 155 m 156 n 157 o 160 p 161 q 162 r 163 s 164 t 165 u 166 v 167 w 170 x 171 y 172 z 173 { 174 175 } 176 ~ 177 del Each character is represented by a 7-bit ASCII code. It is packed into 8-bits 51

Many types Unicode UTF-8: variable length encoding backward compatible with ASCII Linux UTF-16: variable length Windows, Java UTF-32: fixed length 52

Basic Data Types Bit: 0, 1 Bit String: sequence of bits of a particular length 4 bits is a nibble 8 bits is a byte 16 bits is a half-word 32 bits is a word 64 bits is a double-word Character: ASCII 7 bit code (packed in a byte) Decimal: (BCD code) digits 0-9 encoded as 0000 thru 1001 two decimal digits packed per 8 bit byte Integers: 2's Complement (32-bit representation). Floating Point: Single Precision (32-bit representation). Double Precision (64-bit representation). Extended Precision(128 -bit representation). How many +/- #'s? Where is decimal pt? How are +/- exponents represented? 53

Next time Memory Pointers Arrays Strings Bitwise operations Instruction Set Architecture Reading Start Chapter 2 54