Arithmetic operations in binary

Slides:



Advertisements
Similar presentations
HEXADECIMAL NUMBERS Code
Advertisements

Digital Fundamentals Floyd Chapter 2 Tenth Edition
Assembly Language and Computer Architecture Using C++ and Java
Assembly Language and Computer Architecture Using C++ and Java
2-1 Computer Organization Part Fixed Point Numbers Using only two digits of precision for signed base 10 numbers, the range (interval between lowest.
VIT UNIVERSITY1 ECE 103 DIGITAL LOGIC DESIGN CHAPTER I NUMBER SYSTEMS AND CODES Reference: M. Morris Mano & Michael D. Ciletti, "Digital Design", Fourth.
Digital Fundamentals Floyd Chapter 2 Tenth Edition
The Binary Number System
Arithmetic for Computers
© 2009 Pearson Education, Upper Saddle River, NJ All Rights ReservedFloyd, Digital Fundamentals, 10 th ed Digital Fundamentals Tenth Edition Floyd.
Lecture 6 Topics Character codes Error Detection and Correction
Arithmetic operations in binary Addition / subtraction ? “Method” exatly the same as decimal.
1 Digital Technology and Computer Fundamentals Chapter 1 Data Representation and Numbering Systems.
Computer Architecture
Binary Codes. Binary Code A binary code is just an assignment of information to bit patterns.
Topic 2 – Introduction to Computer Codes. Computer Codes A code is a systematic use of a given set of symbols for representing information. As an example,
Number Systems Spring Semester 2013Programming and Data Structure1.
Digital Logic Design Lecture 3 Complements, Number Codes and Registers.
Number Systems and Codes. CS2100 Number Systems and Codes 2 NUMBER SYSTEMS & CODES Information Representations Number Systems Base Conversion Negative.
1 EENG 2710 Chapter 1 Number Systems and Codes. 2 Chapter 1 Homework 1.1c, 1.2c, 1.3c, 1.4e, 1.5e, 1.6c, 1.7e, 1.8a, 1.9a, 1.10b, 1.13a, 1.19.
ECE 3110: Introduction to Digital Systems unsigned Multiplication/Division codes.
Computer Math CPS120 Introduction to Computer Science Lecture 4.
Digital Logic Lecture 3 Binary Arithmetic By Zyad Dwekat The Hashemite University Computer Engineering Department.
Digital Fundamentals Tenth Edition Floyd Chapter 2 © 2008 Pearson Education.
Integer Operations Computer Organization and Assembly Language: Module 5.
Computer Math CPS120 Introduction to Computer Science Lecture 7.
Number Systems. The position of each digit in a weighted number system is assigned a weight based on the base or radix of the system. The radix of decimal.
Number Systems Decimal (Base 10) –10 digits (0,1,2,3,4,5,6,7,8,9) Binary (Base 2) –2 digits (0,1) Digits are often called bits (binary digits) Hexadecimal.
1 CE 454 Computer Architecture Lecture 4 Ahmed Ezzat The Digital Logic, Ch-3.1.
William Stallings Computer Organization and Architecture 8th Edition
Floating Point Representations
CS2100 Computer Organisation
CS11001/CS11002 Programming and Data Structures (PDS) (Theory: 3-0-0)
Binary Codes.
Data Representation COE 308 Computer Architecture
Signed binary numbers & Binary Codes
Programming and Data Structure
ECE 2110: Introduction to Digital Systems
NUMBER SYSTEMS.
Data Representation ICS 233
CS2100 Computer Organisation
Data Representation.
Dr. Clincy Professor of CS
Digital Logic and Computer Organization
Lecture No. 4 Number Systems
Number Representation
Data Representation Binary Numbers Binary Addition
Standard Data Encoding
Number systems and codes
Chapter 2 Data Types and Representations
Dr. Clincy Professor of CS
Binary Arithmetic Binary arithmetic is essential in all digital computers and in many other types of digital systems. Addition, Subtraction, Multiplication,
Advanced Computer Networks
CS1010 Programming Methodology
Wakerly Section 2.4 and further
Chapter 1 Number Systems, Number Representations, and Codes
BEE1244 Digital System and Electronics BEE1244 Digital System and Electronic Chapter 2 Number Systems.
Data Representation Data Types Complements Fixed Point Representation
Digital Logic & Design Lecture 03.
Dr. Clincy Professor of CS
Dr. Clincy Professor of CS
Data Representation – Chapter 3
EEL 3705 / 3705L Digital Logic Design
Chapter 3 DataStorage Foundations of Computer Science ã Cengage Learning.
ECE 331 – Digital System Design
Data Representation COE 308 Computer Architecture
Chapter 1 Introduction.
Two’s Complement & Binary Arithmetic
Presentation transcript:

Arithmetic operations in binary Addition / subtraction 01011 + 111 ? “Method” exatly the same as decimal

Arithmetic operations in binary Addition X = xn … xi … x0 + Y = yn … yi … y0 __________________ di di = (xi + yi ) mod r + carry-in

Addition For ( i = 0…n ) do di = (xi + yi + carry-in) mod r carry-out = (xi + yi + carry-in) div r End for

Arithmetic operations in binary Subtraction Can you write an equivalent method (algorithm) for subtraction? Algorithm: a systematic sequence of steps/operations that describes how to solve a problem

Arithmetic operations in binary Subtraction X = xn … xi … x0  Y = yn … yi … y0 ___________________________________________________ di For ( i = 0…n ) do di = ( xi  yi  bi-1 ) mod r borrow-out = ( xi  yi  bi-1 ) div r End for

Subtraction

Arithmetic operations in binary Multiplication For ( i = 0…n ) do di = ( xi  yi + ci-1 ) mod r ci = ( xi  yi + ci-1 ) div r End for Is this correct?

Negative numbers (4 traditions): Signed magnitude Radix complement Diminished radix complement Excess-b (biased) n = number of symbols (digits, bits, etc.) r = radix radix complement of x is e.g. n = 4, r = 10 7216 --> 9999 - 7216 + 1 = 2784 (10s complement) n = 4, r = 2 0101 --> 1111 - 0101 + 1 = 1011 (2s complement)

diminished radix complement is e.g. n = 4, r = 10 7216 --> 9999 - 7216 = 2783 (9s complement) n = 4, r = 2 0101 --> 1111 - 0101 = 1010 (1s complement) Note: operation is reversible (ignoring overflow) i.e. complement of complement returns original pattern (for both radix and diminished radix forms) for zero and its complement: 10s complement: 0000 --> 9999 + 1 = 10000 --> 0000 9s complement: 0000 --> 9999 --> 0000

Arithmetic with complements n = 4 r = 2 Excess-8

Signed number representations [[N]] = rn – ( rn – N ) = N ( N + [N] ) mod rn = 0 Example: (n = 4) +5  0101 -5  1011 10000  24 N + [N] mod 24 = 0 N = 5 r = 10 N = 32546 [N] = 105 – 32546 = (67454)10

Two’s complement arithmetic ( an-1, an-2, … a0 ) in 2-s complement is Example: (n = 4) 0101  023 + 122 + 02 + 11 = 4 + 1 = 5 1011  123 + 022 + 12 + 11 = 8 + 2 + 1 = 5 Addition/subtraction (n = 5) +10  01010 +3  00011 01101  13

Two’s complement arithmetic Addition/subtraction (n = 5) +10  01010 +7  00111 Overflow 10001  15 +15  01010 13  10011 Discard 100010  2 When can overflow happen? Only when both operands have the same sign and the sign bit of the result is different.

Cyclic representation (n = 4, r = 2) avoid discontinuity between 0111 and 1000 Add x: move x positions clockwise Subtract x: move x positions counterclockwise move (16 - x) positions clockwise (i.e. add radix complement)

How to detect discontinuity? 5 + 6 11 0101 + 0110 1011 no overflow (in 4-bit register) but, carry into most significant bit is 1 while carry out is 0 -5 + -6 -11 1011 + 1010 10101 overflow but, carry into most significant bit is 0 while carry out is 1

Same circuitry. signed numbers. add Same circuitry signed numbers add subtract (use 2s complement of subtrahend) Intel architecture OF (overflow flag) detects out-of-range result unsigned numbers same protocol but discontinuity is now between 0000 and 1111 detect with overflow for addition lack of overflow for subtraction Intel uses CF (carry flag) to detect out-of-range result

Codes 4-bit codes for digits 0 through 9 (BCD : 8421 weighted) 2421 and Excess-3 are self-complementing (complement bits to get 9’s complement representation) Biquinary has two ranges 01… and 10… one-bit error produces invalid codeword

Number representation inside computer Integers – represented in 2’s complement Single precision – 32 bits Largest positive integer is 231-1 = 2,147,483,647 Smallest negative integer is -231 = 2,147,483,648

Number representation inside computer Floating point Scientific notation 0.0043271 = 0.4327110-2 normalized number The digit after the decimal point is  0 Normalized notation maximizes the use of significant digits.

Floating point numbers N = (-1)S  m  rE S = 0  positive S = 1  negative m  normalized fraction for radix r = 2 As MSB digit is always 1, no need to explicitly store it Called hidden bit  gives one extra bit of precision S E m

Floating point formats IEEE format: (-1)S(1.m)2E-127 DEC format: (-1)S(0.m)2E-128

Floating point formats Different manufacturers used different representations

Mechanical encoder with sequential sector numbering At boundaries can get a code different than either adjacent sector

Gray code:

Gray code algorithm: input: (binary) output: (Gray code) e.g. Alternative algorithm (n bits) If n = 1 use 0->0 and 1->1 If n > 1 first half is Gray code on (n - 1) bits preceded by 0 second half is reversed Gray code on (n - 1) bits preceded by 1

Representing non-numeric data Code: systematic and preferably standardized way of using a set of symbols for representing information Example: BCD (binary coded decimal) for decimal #s It is a “weighted” code  the value of a symbol is a weighted sum Extending number of symbols to include alphabetic characters EBCDIC (by IBM): Extended BCD Interchange Code ASCII: American Standard Code for Information Interchange

Codes

Cyclic codes A circular shift of any code word produces a valid code word (maybe the same) Gray code – example of a cyclic code Code words for consecutive numbers differ by one bit only

Ascii, ebcdic codes State codes, e.g.

Consequences of binary versus one-hot coding:

n-cubes of codewords: Hamming distance between x and y is count of positions where x-bit differs from y-bit Also equals link count in shortest path from x to y

Gray code is path that visits each vertex exactly once

Error-detecting codes concept: choose code words such that corruption generates a non-code word to detect single-bit error, code words must occupy non-adjacent cube vertices Problem Solution: parity

Error-correcting codes minimum distance between code words > 1 Example: correct one bit errors or detect two-bit errors Two-bit error from 0001011

Write minimum distance as 2c + d + 1 bits ==> corrects c-bit errors and detects (c + d)-bit errors Example: min distance = 4 = 2(1) + 1 + 1 But also, 4 = 2(0) + 3 + 1

Why? suppose minimum distance is h c c h - 2c  d = h - 2c -1 pair of closest nodes maximally distant from left with entering correction zone 2c + d + 1 = 2c + (h - 2c - 1) + 1 = h

Create group for each check bit Hamming codes: number bit positions 1, 2, 3, ... n from right to left bit position is a power of 2 => check bit else => information bit e.g. (n = 7) check bits in positions 1, 2, 4 information bits in positions 3, 5, 6, 7 Create group for each check bit Express check bit position in binary Group all information bits whose binary position has a one in same place e.g. (n = 7) check information 1 (001) 3 (011), 5 (101), 7 (111) 2 (010) 3 (011), 6 (110), 7 (111) 4 (100) 5 (101), 6 (110), 7 (111)

Code information packets to maintain even parity in groups e.g. (n = 7) packet is 1011 => positions 7, 6, 5, 3 7 6 5 4 3 2 1 1 0 1 x 1 x x Consult group memberships to compute check bits check information 1 3, 5, 7 => bit 1 is 1 2 3, 6, 7 => bit 2 is 0 4 5, 6, 7 => bit 4 is 0 Code word is 1010101

Note: Single bit error corrupts one or more parity groups => minimum distance > 1 Two-bit error in locations x, y corrupts at least one parity group => minimum distance > 2 Three-bit error (i.e. 1, 4, 5) goes undetected => minimum distance = 3 3 = 2(1) + 0 + 1 = 2(0) + 2 + 1 => can correct 1-bit errors or detect errors of size 1 or 2.

Pattern generalizes to longer bit strings: Group 8 Group 4 Group 2 Group 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Pattern generalizes to longer bit strings: Single bit error corrupts one or more parity groups => minimum distance > 1 Consider two-bit error in positions x and y. To avoid corrupting all groups: -- avoid group 1: bit 1 (lsb) same for both x and y -- avoid group 2: bit 2 same for both -- avoid group 4: bit 3 same for both, etc. -- forces x = y So true two-bit error corrupts at least one parity group => min distance > 2 Three-bit error (two msb and lsb) goes undetected => minimum distance = 3 Conclude: process always produces a Hamming code with min distance = 3

Traditional to permute check bits to far right Used in memory protection schemes

Add traditional parity bit (for entire word) to obtain code with minimum distance = 4

Number of check bits grows slowly with information bits For minimum distance = 4: Number of check bits grows slowly with information bits

Two-dimensional codes (product codes) min distance is product of row and column distances for simple parity on each (below) min distance is 4

Scheme for RAID storage CRC is extension of Hamming codes each disk is separate row column is disk block (say 512 characters) rows have CRC on row disk columns have even parity

Checksum codes mod-256 sum of info bytes becomes checksum byte mod-255 sum used in IP packets m-hot codes (m out of n codes) each valid codes has m ones in a frame of n bits min distance is 2 detect all unidirectional errors bit flips are all 0 to 1 or 1 to 0

Serial data transmission (simple) transmit clock and sync with data (3 lines) (complex) recover clock and/or sync from data line

Serial line codes: NRZ: clock recovery except during long sequences of zeros or ones NRZ1: nonreturn to zero, invert on one zero => no change, one => change polarity RZ: clock recovery except during long sequences of zero DC balance Bipolar return to zero (aka alternate mark inversion: send one as +1 or -1) Manchester: zero => 0 to 1 transition, one => 1 to 0 transition at interval center