Imperial College London Department of Computing

Similar documents
Memory is implemented as an array of electronic switches

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

Numeral Systems. The number twenty-five can be represented in many ways: Decimal system (base 10): 25 Roman numerals:

Levent EREN A-306 Office Phone: INTRODUCTION TO DIGITAL LOGIC

The string of digits in the binary number system represents the quantity

ASCII Code. Numerous codes were invented, including Émile Baudot's code (known as Baudot

Computer Science 281 Binary and Hexadecimal Review

Lecture 2. Binary and Hexadecimal Numbers

EE 261 Introduction to Logic Circuits. Module #2 Number Systems

Chapter 1: Digital Systems and Binary Numbers

Chapter 5. Binary, octal and hexadecimal numbers

Systems I: Computer Organization and Architecture

Chapter 1. Binary, octal and hexadecimal numbers

Number Representation

Binary Representation. Number Systems. Base 10, Base 2, Base 16. Positional Notation. Conversion of Any Base to Decimal.

Binary Representation

Digital Logic Design. Introduction

Binary, Hexadecimal, Octal, and BCD Numbers

Oct: 50 8 = 6 (r = 2) 6 8 = 0 (r = 6) Writing the remainders in reverse order we get: (50) 10 = (62) 8

Chapter 4: Computer Codes

Useful Number Systems

Lecture 8: Binary Multiplication & Division

CSI 333 Lecture 1 Number Systems

BAR CODE 39 ELFRING FONTS INC.

NUMBER SYSTEMS. 1.1 Introduction

Numbering Systems. InThisAppendix...

DEBT COLLECTION SYSTEM ACCOUNT SUBMISSION FILE

To convert an arbitrary power of 2 into its English equivalent, remember the rules of exponential arithmetic:

Encoding Text with a Small Alphabet

Section 1.4 Place Value Systems of Numeration in Other Bases

=

Base Conversion written by Cathy Saxton

ASCII Characters. 146 CHAPTER 3 Information Representation. The sign bit is 1, so the number is negative. Converting to decimal gives

2011, The McGraw-Hill Companies, Inc. Chapter 3

URL encoding uses hex code prefixed by %. Quoted Printable encoding uses hex code prefixed by =.

Binary Division. Decimal Division. Hardware for Binary Division. Simple 16-bit Divider Circuit

Symbols in subject lines. An in-depth look at symbols

Data Storage. Chapter 3. Objectives. 3-1 Data Types. Data Inside the Computer. After studying this chapter, students should be able to:

CPEN Digital Logic Design Binary Systems

Xi2000 Series Configuration Guide

This is great when speed is important and relatively few words are necessary, but Max would be a terrible language for writing a text editor.

Solution for Homework 2

CDA 3200 Digital Systems. Instructor: Dr. Janusz Zalewski Developed by: Dr. Dahai Guo Spring 2012

Digital System Design Prof. D Roychoudhry Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Divide: Paper & Pencil. Computer Architecture ALU Design : Division and Floating Point. Divide algorithm. DIVIDE HARDWARE Version 1

CS201: Architecture and Assembly Language

Lecture 11: Number Systems

MACHINE INSTRUCTIONS AND PROGRAMS

The ASCII Character Set

Positional Numbering System

Representação de Caracteres

NUMBER SYSTEMS APPENDIX D. You will learn about the following in this appendix:

COMBINATIONAL CIRCUITS

IBM Emulation Mode Printer Commands

Voyager 9520/40 Voyager GS9590 Eclipse 5145

BI-300. Barcode configuration and commands Manual

2010/9/19. Binary number system. Binary numbers. Outline. Binary to decimal

Unsigned Conversions from Decimal or to Decimal and other Number Systems

LSN 2 Number Systems. ECT 224 Digital Computer Fundamentals. Department of Engineering Technology

The Hexadecimal Number System and Memory Addressing

CHAPTER 8 BAR CODE CONTROL

Today. Binary addition Representing negative numbers. Andrew H. Fagg: Embedded Real- Time Systems: Binary Arithmetic

CS101 Lecture 11: Number Systems and Binary Numbers. Aaron Stevens 14 February 2011

Data Storage 3.1. Foundations of Computer Science Cengage Learning

Computers. Hardware. The Central Processing Unit (CPU) CMPT 125: Lecture 1: Understanding the Computer

HOMEWORK # 2 SOLUTIO

This Unit: Floating Point Arithmetic. CIS 371 Computer Organization and Design. Readings. Floating Point (FP) Numbers

MIPS Assembly Language Programming CS50 Discussion and Project Book. Daniel J. Ellard

Bachelors of Computer Application Programming Principle & Algorithm (BCA-S102T)

Chapter 7 Lab - Decimal, Binary, Octal, Hexadecimal Numbering Systems

Goals. Unary Numbers. Decimal Numbers. 3,148 is s 100 s 10 s 1 s. Number Bases 1/12/2009. COMP370 Intro to Computer Architecture 1

Number Systems and Radix Conversion

Chapter 2. Binary Values and Number Systems

Command Emulator STAR Line Mode Command Specifications

Cyber Security Workshop Encryption Reference Manual

Digital Design. Assoc. Prof. Dr. Berna Örs Yalçın

Everything you wanted to know about using Hexadecimal and Octal Numbers in Visual Basic 6

A single register, called the accumulator, stores the. operand before the operation, and stores the result. Add y # add y from memory to the acc

What Is Singapore Math?

Integer Operations. Overview. Grade 7 Mathematics, Quarter 1, Unit 1.1. Number of Instructional Days: 15 (1 day = 45 minutes) Essential Questions

BARCODE READER V 2.1 EN USER MANUAL

Data Storage. 1s and 0s

INTERNATIONAL STANDARD

COMP 250 Fall 2012 lecture 2 binary representations Sept. 11, 2012

1. Give the 16 bit signed (twos complement) representation of the following decimal numbers, and convert to hexadecimal:

CHAPTER 5 Round-off errors

2 Number Systems. Source: Foundations of Computer Science Cengage Learning. Objectives After studying this chapter, the student should be able to:

ASCII CODES WITH GREEK CHARACTERS

NUMBER SYSTEMS. William Stallings

Counting in base 10, 2 and 16

This 3-digit ASCII string could also be calculated as n = (Data[2]-0x30) +10*((Data[1]-0x30)+10*(Data[0]-0x30));

Binary Numbering Systems

1.6 The Order of Operations

TELOCATOR ALPHANUMERIC PROTOCOL (TAP)

The science of computing

SYSTEMS OF EQUATIONS AND MATRICES WITH THE TI-89. by Joseph Collison

MATH-0910 Review Concepts (Haugen)

Create!form Barcodes. User Guide

Unit 1 Number Sense. In this unit, students will study repeating decimals, percents, fractions, decimals, and proportions.

Binary Numbers. Binary Octal Hexadecimal

Transcription:

Imperial College London Department of Computing Architecture SELF-STUDY NOTES January 2016 Integers and Characters (1)

Self-Study Welcome to the Computer Architecture course. These notes cover basic topics for students to study largely on their own. The topics are straightforward and should not require much effort. If you are stuck, however, then you can contact me by email (w.luk@imperial.ac.uk). There are some simple exercises at the end of the notes for you to try. The website for the course is: https://www.doc.ic.ac.uk/~wl/teachlocal/arch1 Note: the URL starts https and you will be required to authenticate yourself. The topics cover: Unsigned Integer Representation You should be able to perform radix conversion between decimal, binary and hexadecimal (base 16). You should be able to perform the four basic arithmetic operations on positive numbers in binary. Signed Integer Representation You should be able to represent signed decimal integers in two s complement, sign-and-magnitude, excess/bias and BCD. You should be able to add and subtract two s complement numbers and recognise overflows. Character Representation You should understand how computers represent characters and know of the ASCII and Unicode character sets. Acknowledgement: these notes were originally prepared by Dr. N. Dulay. Integers and Characters (2)

Unsigned Integers Computers process binary patterns, i.e. of patterns of 0 s and 1 s. To represent data 1 within a computer we need to code it as a binary pattern. The representation of integers 2 and characters are the most important to consider because more complicated data representations can be built from them, e.g. complex numbers, dates, times, addresses, sound, video, typefaces. Computer architects have employed many different schemes for representing numerical values, and there are advantages and disadvantages to each representation. Before considering these, we need to remind ourselves about binary numbers. Binary numbers As you know, unsigned integer numbers can be represented in bases (radices) other than base ten (decimal), for example the decimal number 14 can be represented as 16 in base 8 (octal) as 24 in base 5, as 112 in base 3 (ternary), and as 1110 in base 2 (binary). These follow from the standard technique of coding each position of the number as a power of the base: dnd n 1... d 0. For a decimal number we have: n d * k 0 k n k 10 d, while for a binary number k k 0 * k The second sum (for a binary number) also gives us a simple method to convert integers from base 2 to base 10. Example: for the decimal number 252 we have: 252 1111 1100 3 Decimal (Base 10) Binary (Base 2) MS LS MS LS 2 5 2 1 1 1 1 1 1 0 0 100 10 1 128 64 32 16 8 4 2 1 10 2 10 1 10 0 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 2 Here MS stands for Most Significant and signifies the leftmost digit or bit. LS stands for Least Significant and signifies the rightmost digit or bit. We can make the base of a number explicit by suffixing it to the number as a subscript: 14 10 = 16 8 = 24 5 = 112 3 = 1110 2 In some computer languages we suffix the letter B (or b) to binary values e.g. 101B 1 We ll also look at how computer programs are represented later in the course. 2 We ll also look at the approximation of real numbers using floating-point numbers later in the course. 3 Spaces or underscores in binary numbers are added for readability. Spaces/underscores between groups of 4 bits (grouping right-to-left) is common. Integers and Characters (3)

Decimal to Binary Conversion (Division) There are several ways of converting decimal numbers to binary. A simple technique involves repeated division by 2. Example: What is 98 10 in binary? Steps: Divide the number by 2 giving the quotient and the remainder. Repeat previous step with the new quotient until a zero quotient is obtained. The answer is obtained by reading the remainder column from the bottom to the top. Quotient Remainder 98 2 49 0 49 2 24 1 24 2 12 0 12 2 6 0 6 2 3 0 3 2 1 1 1 2 0 1 Answer: 110 0010 2 reading the remainder column from bottom to the top MS-bit to LS-bit Integers and Characters (4)

Decimal to Binary Conversion (Subtraction) Here is a second technique that subtracts descending powers of 2 from the number. Example: What is 98 10 in binary? Steps: Determine C. C can be or <. If then B is 1. If < then B is 0. If C is then set next N to N - P. If C is < then continue with current N. Repeat for descending powers of 2 in column P. Answer is in column B reading from top to bottom (MS-bit to LS-bit) N C P B 98 64 1 98-64 = 34 32 1 34-32 = 2 < 16 0 2 < 8 0 2 < 4 0 2 2 1 2-2 = 0 < 1 0 Answer: 110 0010 2 Integers and Characters (5)

Binary Octal (Base 8) Conversion In the past 4 programmers sometimes used octal as a more convenient base for representing long binary values. The octal representation is shorter and the conversion from binary to octal and viceversa is straightforward. The basic rule of thumb for an octal value is: Starting from the rightmost (least significant) end, each group of 3 bits represents 1 octal digit (called an octet). 000 (0), 001 (1), 010 (2), 011 (3), 100 (4), 101 (5), 110 (6), 111 (7) Example: What is 10101 2 in octal? 10 101 2 5 Answer: 25 8 Example: What is 357 8 in binary? Answer: 11101111 2 4 Although octal is less used these days, you should be familiar with the term. Integers and Characters (6)

Hexadecimal (Base 16) Hexadecimal (hex) has overtaken octal as the radix used by programmers to represent long binary values. Binary values can be integers, characters, real numbers, memory addresses, instructions, etc We will use hexadecimal extensively, so it is important to master conversions. It is also important to understand that hexadecimal and decimal are conveniences for humans, the computer represents everything in binary only. We will not perform arithmetic in hexadecimal, only use it as a shorthand for writing binary values. Starting from the rightmost (least significant) end, each group of 4 bits represents 1 hex digit. We use the symbols 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F for these. The letters A to F can be in uppercase or lowercase. We can summarise the correspondence between hexadecimal, decimal and binary with the following table: Hex 0 1 2 3 4 5 6 7 8 9 A B C D E F Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Binary 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 Example: What is 252 10 = 1111 1100 2 in hexadecimal? 1111 1100 F C Answer. FC 16 Note: We will sometimes use the suffix the letter H (or h) after a hexadecimal value instead of the subscript 16, e.g. 2A3H. Another alternative that is used in some programming languages is to prefix the hexadecimal value with 0x, e.g. 0x2A3 Integers and Characters (7)

Radix Arithmetic Performing addition, subtraction, multiplication and division in bases other that 10 is identical to decimal arithmetic except that we use the particular base as the point of reference instead of 10. Some examples should make this clear. Addition A R + B R Working from Right to Left While digits remain to be added Add current digits of A and B If SUM is less than R then record SUM Otherwise record difference SUM - R add (carry) 1 to next column End while 4 3 2 7 + 5 4 3 7 ================== 1 3 0 5 7 Subtraction A R - B R when A>B Working from Right to Left While digits remain to be subtracted If digitof (A) >= digitof (B) then record A - B Otherwise record (R + A) B subtract 1 from digits to A s left (or add 1 to digits to B s left) End while 1 4 3 2 8 5 7 6 8 ================== 6 3 4 8 Integers and Characters (8)

Binary Addition Example Addition of unsigned binary numbers is straightforward. Example: Perform the binary addition 11 1011 + 10 1010 Carry 1 1 1 1 A 1 1 1 0 1 1 B + 1 0 1 0 1 0 Sum 1 1 0 0 1 0 1 Step 7 6 5 4 3 2 1 Step k A k +B k +Carry k = Carry k+1 Sum k 1 1 + 0 = 1 => sum 1 2 1 + 1 = 10 => carry 1 sum 0 3 0 + 0 + 1 = 1 => sum 1 4 1 + 1 = 10 => carry 1 sum 0 5 1 + 0 + 1 = 10 => carry 1 sum 0 6 1 + 1 + 1 = 11 => carry 1 sum 1 7 1 = 1 => sum 1 Integers and Characters (9)

Binary Subtraction Example Binary subtraction is straightforward too. We ll assume that the minuend is greater than the subtrahend, i.e. the result is not negative. Example: Perform the binary subtraction 101 0101 1 1100 A 0 1 10 A 1 0 0 10 A 1 0 1 0 1 0 1 B 1 1 1 0 0 Diff 0 1 1 1 0 0 1 Step 7 6 5 4 3 2 1. Step k A k B k = Diff k 1 1 0 = 1 2 0 0 = 0 3 1 1 = 0 4 0 1 Borrow by subtracting 1 from A 7..5 =101 to give 10 1 =1 A 7..5 =100 and A 4 =10. Now use A instead of A, e.g. A 4 B 4 5 0 1 Subtract 1 from A 7..6 =10 to give A 7..6 =01, A 5 =10. 10 1 =1 6 1 0 = 1 i.e. A 6 B 6 7 0 0 = 0 Now use A instead of A, e.g. A 5 B 5 If you are used to borrowing by adding back to B (the subtrahend), then that method will work also and you can use it. Warning: many students have forgotten how to subtract numbers and become reliant on calculators. Make sure you can subtract without a calculator! Integers and Characters (10)

Binary Multiplication Example Example: Perform the binary multiplication 1 1101 x 111 A 1 1 1 0 1 B 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0 1 Answer 1 1 0 0 1 0 1 1 Carry 1 10 10 1 1 Binary Division Example Recall that division is or dividend remainder quotient divisor divisor dividend quotient divisor remainder The main difficulty with human division is in estimating how many times the divisor goes into the partial dividend. Most people do this mentally. Luckily for binary numbers, this is easier since we only have two choices. We will postpone the consideration of fractional results until later in the course. Example: Perform the binary division 10 0011 1111 / 1 1001 i.e. decimal 575/25 Quotient-> 1 0 1 1 1 11001 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 0 1 Remainder-> 0 Although the numbers in the example above are binary, you may find it useful to pretend they are decimal when performing comparisons, i.e. will 11,001 go into 10,001 (no), will it go into 100,011 (yes). If you re Greek, then the division technique taught in Greek schools works fine (try it!). Integers and Characters (11)

Signed Integers Up until now we have been assuming that integers are unsigned. In addition to representing the magnitude of numbers, computer architects also need to consider the representation of the sign of a number (+ or -) and for real numbers the representation of fractional values and the representation of exponents. In this section we ll consider the representation of signed integers. Bit Groups Numbers within a computer system are not normally allowed to be of arbitrary length (size). Instead numbers are represented and manipulated in finite bit groups. The most common bit groups are the bit (1-bit), the byte (8-bit), and the word. Word size is architecture dependent but popular examples are 16-bit words, 32-bit words, and 64-bit words 5. Architectures often employ their own unique names for the differing sizes, for example, on the Pentium 16-bit groups are called words, 32-bit groups are called doublewords and 64-bit groups are called quadwords. Bit Nibble 6 Byte 16-bit Word 3 2 1 0 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 The numbers above the bits indicate the bit position, with the least significant bit at position 0 (the rightmost end). 5 We shall see later in the course that there is a strong relationship between word size, the width of memory locations and the size of CPU registers. 6 Nibble = Half-a-byte obviously :-) Integers and Characters (12)

Representing Unsigned Integers If we are only interested in natural (unsigned) numbers, then we can represent values by their binary value within the computer, padding the number to the left with 0 s to fill the byte or word. The following table summarises the ranges of natural numbers 7 for several bit group sizes: Bit group Bits Hex digits Bit 1 1 No of possible bit patterns 2 1 =2 Representable unsigned integers 0 and 1 Nibble 4 1 2 4 = 16 0 to 15 Byte 8 2 2 8 = 256 0 to 255 Word(16bit) 16 4 2 16 = 65,536 0 to 65,535 Word(32bit) 32 8 2 32 = 4,294,967,296 0 to 4,294,967,295 N bits N N/4 8 2 N 0 to 2 N 1 Example: Show the bit pattern for the number thirteen using groups of 3,4, 5 and 6 bits. 3 bits (we can t do this, since we do not have sufficient bits) 4 bits 1101 5 bits 01101 6 bits 001101 In computing we typically use the following binary definitions for kilo (K), mega (M), giga (G) and tera (T). Kibi (Ki), Mebi (Mi), Gigi (Gi), Tebi (Ti) can be used to avoid confusion with metric defs. Kilo K=2 10 =1024 Kibi (Ki) e.g. KiB Mega M=2 20 =1024 2 which is just over 1 million Mebi (Mi) e.g. MiB Giga G=2 30 =1024 3 which is just over 1 billion Gigi (Gi) e.g. GiB Tera T=2 40 =1024 4 which is just over 1 trillion Tebi (Ti) e.g. TiB 7 Any of the representations for signed integers can also be used although the range will be smaller. We will see later in the course that unsigned integers are used to address main memory locations. 8 is the ceiling operator. Integers and Characters (13)

A common convention is to use B to signify Bytes and b for bits. For example, 4 MB means 4 Megabytes, while 4 Mb means 4 Megabits. Integers and Characters (14)

Representing Signed Integers Although most computers provide some support for representing unsigned integers, good support for the representation of signed integers within a computer is more important. We shall outline several representations: Sign & Magnitude, One s Complement, Two s Complement, Bias-N (Excess-N), and Binary Coded Decimal (BCD). The most important and most used representation is Two s Complement. In any representation the properties we would ideally like to have are: only 1 bit pattern for each value equal number of positive and negative values maximum range of values no gaps in the range In addition, and perhaps most important we would like to have a fast and economical hardware implementation 9 of integer arithmetic. We will use as an example the 4-bit group, i.e. the following bit-patterns: Bit Pattern Unsigned 0000 +0 0001 +1 0010 +2 0011 +3 0100 +4 0101 +5 0110 +6 0111 +7 1000 +8 1001 +9 1010 +10 1011 +11 1100 +12 1101 +13 1110 +14 1111 +15 9 Hardware implementation -> minimal number of transistors AND fast arithmetic if possible. Integers and Characters (15)

Representing Integers I - Sign & Magnitude In the sign & magnitude representation we use 1 bit (invariably the leftmost bit) of the bit group to represent the sign of the integer and the remaining bits to represent the magnitude. Example: What integers can we represent in 4 bits using sign & magnitude? Bit Pattern Unsigned Sign & Magnitude 0000 +0 +0 0001 +1 +1 0010 +2 +2 0011 +3 +3 0100 +4 +4 0101 +5 +5 0110 +6 +6 0111 +7 +7 1000 +8 0 1001 +9 1 1010 +10 2 1011 +11 3 1100 +12 4 1101 +13 5 1110 +14 6 1111 +15 7 Perhaps the first thing we notice about sign & magnitude is that we have two bit patterns for zero (labelled +0 and 0). This wastes a value and requires that the hardware treat both bit patterns as zero. Sign & magnitude is the simplest representation for humans to understand, and a little bit-more costly (in transistors) than other methods to implement. Why? Because signs need to be taken into account explicitly leading to the need to implement subtractors as well as adders, for example, for addition we need to compare signs and absolute values of the numbers and then add or subtract accordingly. Comparing two absolute values is also a costly operation. Two s complement representation doesn t have these disadvantages. For an n-bit group, the sign & magnitude numbers will range from (2 n 1 1) to +(2 n 1 1) Integers and Characters (16)

Representing Integers II - One's Complement (historical) In one s complement we represent (in a finite bit group) we can negate a number by complementing (or inverting) each bit. The complement of 1 is 0; the complement of 0 is 1. Example: What integers can we represent in 4 bits using one's complement? Bit Pattern Unsigned Sign & Magnitude One's Complement 0000 +0 +0 +0 0001 +1 +1 +1 0010 +2 +2 +2 0011 +3 +3 +3 0100 +4 +4 +4 0101 +5 +5 +5 0110 +6 +6 +6 0111 +7 +7 +7 1000 +8 0 7 1001 +9 1 6 1010 +10 2 5 1011 +11 3 4 1100 +12 4 3 1101 +13 5 2 1110 +14 6 1 1111 +15 7 0 Like sign & magnitude, one s complement yields two representations for zero, and a 1 for the leftmost bit indicates a negative value. One s complement is less intuitive (for humans) than sign & magnitude, but less costly to implement in hardware. Because of the two representations for zero, with one s complement the result after an operation is not always correct e.g. we must add 1 to the result of an addition if the carry out from the most significant bit is 1. It is desirable to avoid such complications in hardware. Like sign & magnitude, for an n-bit group the one's complement numbers will range from (2 n 1 1) to +(2 n 1 1) One s complement was used on some old computers and is no longer used. Integers and Characters (17)

Representing Integers III - Two s Complement Two s complement representation is the most popular representation for signed integers. In two s complement representation we obtain the negative of an integer by complementing each of its bits and adding 1 to the result. The 2s complement for an n-bit binary number X is defined as (2 n X) Example: What integers can we represent in 4 bits using two's complement? Bit Pattern Unsigned Sign & Magnitude One's Complement Two's Complement 0000 +0 +0 +0 +0 0001 +1 +1 +1 +1 0010 +2 +2 +2 +2 0011 +3 +3 +3 +3 0100 +4 +4 +4 +4 0101 +5 +5 +5 +5 0110 +6 +6 +6 +6 0111 +7 +7 +7 +7 1000 +8 0 7 8 1001 +9 1 6 7 1010 +10 2 5 6 1011 +11 3 4 5 1100 +12 4 3 4 1101 +13 5 2 3 1110 +14 6 1 2 1111 +15 7 0 1 The first thing that strikes us with two s complement is that we only have 1 bit pattern for zero. The second thing that strikes us, is that the representation is asymmetric 10 i.e. there is one extra negative value. Luckily the asymmetric range is a minor disadvantage compared to the nice properties that two s complement provides. Perhaps the most useful property of two s complement is that subtraction can be performed by forming the 2's complement of the subtrahend and using addition instead. i.e. X Y = X + ( Y) Forming the 2 s complement turns out be a simple operation to implement so there is no need for a separate subtractor (as in sign & magnitude) or carry-out adjustments (as in one s complement). Two s complement is also a true complement in the sense that +X+( X) = 0 and ( X) = X. For n-bits, two's complement numbers range from 2 n 1 to +(2 n 1 1) 10 Sign & Magnitude and One s Complement are symmetric Integers and Characters (18)

Two s complement clock layout The two s complement range can viewed on a clock (see below). When we do this can model addition by counting clockwise and subtraction by counting anti-clockwise. Note also that how the two s complement of a number is horizontally opposite the number and that such pairs add upto 2 4 =16 as unsigned integers. 1111 0000 0001 1110-1 0 +1 0010-2 +2 1101-3 +3 0011 1100-4 +4 0100 1011-5 -6 +6 +5 0101 1010-7 -8 +7 0110 1001 1000 0111 Example: Calculate 5 + ( 4) and 5 ( 2) using the two s complement clock. Conceptually we perform the addition by counting clockwise, i.e. +5 + 4 is 0101 + 1100, i.e. move 1100 (twelve) places clockwise from 0101 which arrives at 0001 = +1. Similarly for the subtraction we count anticlockwise, e.g. +5 ( 2) is 0101 1110 e.g. move 1110 (fourteen) places anticlockwise from 0101 which arrives at 0111=+7. Integers and Characters (19)

Ten s Complement It is interesting to know that we can also have complements in other bases, e.g. ten s complement. The 10s complement of an n-digit decimal number X is defined as (10 n X), e.g. for the 4-digit decimal number 1234 the 10 s complement is 8766. Recall that the 2s complement for an n-bit binary number X is defined as (2 n X). Two s Complement to Decimal To convert a two s complement number to decimal we can use the formula: b n 1 * 2 n 1 = ( 1 * 8) + (0 * 4) + (1 * 2) + (1 * 1) = 8 + 2 + 1 = 5 n 2 b k * 2 k k 0 Example: Convert the 4-bit two's complement value 1011 to decimal. Alternatively for negative values we can negate the number (make it positive), convert to decimal & negate it. For example for 1011 we can Negate 1011 by inverting each bit and adding one giving 0101 Convert 0101 to decimal i.e. 1*4 + 1*1 = 5 Negate 5 to give 5 A simpler method to find the 2 s complement of a binary value is to consider the binary value from right to left, copying all bits upto and including the first 1 bit, and then inverting the remaining bits. For example for 11010100 we would copy 100 (i.e. copying bits upto and including the first 1), then we would invert the remaining bits, e.g. we would invert 11010 giving 00101. The final answer is then 00101_100 ( _ shown for emphasis). Integers and Characters (20)

Representing Integers IV - Excess-n or Bias-n In Excess-n (also called Bias-n) representation we represent an integer X by X+n. n>0. Example: What integers can we represent in 4 bits using an Excess-8 representation? Bit Pattern Unsigned Sign & Magnitude One s Complement Two's Complement Excess 8 0000 0 +0 +0 +0 8 0001 +1 +1 +1 +1 7 0010 +2 +2 +2 +2 6 0011 +3 +3 +3 +3 5 0100 +4 +4 +4 +4 4 0101 +5 +5 +5 +5 3 0110 +6 +6 +6 +6 2 0111 +7 +7 +7 +7 1 1000 +8 0 7 8 0 1001 +9 1 6 7 +1 1010 +10 2 5 6 +2 1011 +11 3 4 5 +3 1100 +12 4 3 4 +4 1101 +13 5 2 3 +5 1110 +14 6 1 2 +6 1111 +15 7 0 1 +7 Like two's complement, excess-n is asymmetric. Excess-n is used where it is important to be able to compare (and sort) values easily. We will return to it when we consider the representation of exponents for real numbers later in the course. Some calculators also employ excess-n numbers. Note: if n is chosen to be equal to 2 m 1 where m is the number of bits in the representation then Excess-n representation is the same as two's complement but with the sign-bit inverted. Integers and Characters (21)

Representing Integers V - Binary Coded Decimal (BCD) Some architectures support an integer representation called Binary Coded Decimal (BCD). BCD is often provided to support commercial applications programmed in the COBOL language since these applications tend be I/O intensive with little arithmetic processing, and the use of BCD avoids costly binary-to-decimal and decimal-to-binary conversions. Also BCD implementations tend to support variable-sized bit groups, e.g. we can easily represent integers with 300 digits. The idea behind BCD is very simple. We represent each decimal digit by 4 bits (a nibble) that encode each decimal digit i.e. we have Bit Pattern Unsigned Sign & Magnitude One's Complement Two's Complement Excess-8 0000 0 +0 +0 +0 8 0 0001 +1 +1 +1 +1 7 +1 0010 +2 +2 +2 +2 6 +2 0011 +3 +3 +3 +3 5 +3 0100 +4 +4 +4 +4 4 +4 0101 +5 +5 +5 +5 3 +5 0110 +6 +6 +6 +6 2 +6 0111 +7 +7 +7 +7 1 +7 1000 +8 0 7 8 0 +8 1001 +9 1 6 7 +1 +9 BCD 1010 +10 2 5 6 +2 spare 1011 +11 3 4 5 +3 spare 1100 +12 4 3 4 +4 spare 1101 +13 5 2 3 +5 spare 1110 +14 6 1 2 +6 spare 1111 +15 7 0 1 +7 spare BCD is obviously very easy for humans to comprehend, although a smaller range of numbers is representable compared with other binary representations, e.g. 16 bits can only represent the natural numbers 0 to 9999. Signs are handled by using two of the unused bit patterns, for example, on the VAX Architecture, the bit pattern 1100 is used for the + sign and 1101 for the sign. Confusingly however, in the VAX architecture the sign nibble occurs at the least significant end. Example. What is 837 10 and 837 10 in VAX BCD? Unsigned value 837 10 is 1000 0011 0111 in BCD. +837 = 1000 0011 0111 1100 in VAX BCD (+ at end) 837 = 1000 0011 0111 1101 in VAX BCD ( at end) Integers and Characters (22)

Signed Integer Arithmetic Because of the dominance of two s complement representation we shall only consider arithmetic for it, in this course. The nice feature with two's complement is that addition and subtraction of two's complement numbers works without having to separate the sign bits (the sign of the operands and results is effectively subsumed addition/subtraction calculation). If the result of an arithmetic operation is to too large or too small to fit into the resultant bit-group, then we have an arithmetic overflow. It is normally left to the programmer to decide how to deal with this situation 11. Two's Complement Addition For two s complement addition we add the values and discard any carry-out bit. Example: Calculate 3+( 8) and 2+( 5) using an 8-bit two s complement representation. (+3) 0000 0011 ( 2) 1111 1110 +( 8) 1111 1000 +( 5) 1111 1011 ( 5) 1111 1011 ( 7) 1 1111 1001 Discard Carry-Out Overflow Rule: If 2 two s complement numbers are added, and they are both positive or both negative, then overflow occurs if and only the result has the opposite sign, i.e. (+A) + (+B) = C or ( A) + ( B) = +C Example: Calculate 7+( 6) using a 4-bit two's complement representation. ( 7) 1001 +( 6) 1010 (+3) 1 0011 Overflow 11 How might we deal with integer overflow? Integers and Characters (23)

Two's Complement Subtraction Subtraction in two's complement is accomplished by negating the subtrahend and adding it to the minuend. Any carry-out bit is discarded. Example: Calculate 8 5 using an 8-bit two s complement representation Overflow Rule: (+8) 0000 1000 0000 1000 (+5) 0000 0101 -> Negate -> + 1111 1011 (+3) 1 0000 0011 Discard If 2 two s complement numbers are subtracted, and their signs are different, then overflow occurs if and only if the result has the same sign as the subtrahend. (+A) ( B) = C or ( A) (+B) = +C Example: Calculate 7 ( 6) using a 4-bit two's complement representation. (+7) 0111 ( 6) 0110 (Negated) ( 3) 1101 Overflow Two s Complement Multiplication & Division Multiplication in two s complement cannot be accomplished with the standard technique. For example consider X * ( Y). The two's complement of Y is 2 n Y. Therefore X (Y) = X(2 n Y) = 2 n X XY. However the expected result should be 2 2n XY. We can perform multiplication by converting the two's complement numbers to their absolute values and then negate the result if the signs of the operands are different. A similar situation exists for two s complement division. To do division by hand, it is easier convert the values to absolute values, perform the division, and then negate if the operand signs are different. Most architectures implement more sophisticated algorithms. Fortunately for us, it is beyond the scope of this course to examine these algorithms. If you need to perform multiplication and division, use the schoolboy method on positive values and set the signs accordingly. Integers and Characters (24)

Characters Computers map characters to bit patterns (unsigned integers effectively). The most common mappings in use are ASCII 12 (pronounced as-key) and Unicode. An older mapping is IBM s EBCDIC. ASCII uses 7-bits (128 bit patterns) although most computers extend this to 8 bits yielding an extra 128 bit-patterns. ASCII has 26 lowercase letters, 26 uppercase letters, 10 digits, and 32 punctuation marks. The remaining 34 bit patterns represent whitespace characters e.g. space (SP), tab (HT), return (CR), linefeed (LF) and special control characters that are used in interfacing to I/O devices. Note that the uppercase letters A-Z, lowercase letters a-z and the digits 0-9 have contiguous values. Strings are represented as sequences of characters;.e.g. the name Fred is encoded as follows: English F r e d ASCII (Binary) 0100 0110 0111 0010 0110 0101 0110 0100 ASCII (Hex) 46 72 65 64 The 7-bit ASCII Character Set Bit positions 654 000 001 010 011 100 101 110 111 3210 NUL DLE SP 0 @ P p 0000 SOH DC1! 1 A Q a q 0001 STX DC2 2 B R b r 0010 ETX DC3 # 3 C S c s 0011 EOT DC4 $ 4 D T d t 0100 ENQ NAK % 5 E U e u 0101 ACK SYN & 6 F V f v 0110 BEL ETB 7 G W g w 0111 BS CAN ( 8 H X h x 1000 HT EM ) 9 I Y i y 1001 LF SUB * : J Z j z 1010 VT ESC + ; K [ k { 1011 FF FS, < L \ l 1100 CR GS - = M ] m } 1101 SO RS. > N ^ n ~ 1110 SI US /? O _ o DEL 1111 Bit positions 12 American Standard Code for Information Interchange Integers and Characters (25)

Unicode is a newer but more complex standard that attempts to provide a number for every character no matter what the language. About 100,000 characters have already been defined. The first 65,536 (16-bit) characters cover the major alphabets of the world. It is becoming common for programming languages to support 16-bit Unicode characters, e.g. Java, Python. Note: the first 127 characters of Unicode correspond to ASCII characters. You can find definitions of the Unicode characters at http:/ / www.unicode.org/ charts/ Examples: Uppercase A in Basic Latin (i.e. ASCII) is 0041 Hex. See page 2 of http:/ / www.unicode.org/ charts/ PDF/ U0000.pdf 3/ 4 in Latin1 is 00BE Hex See page 2 of http:/ / www.unicode.org/ charts/ PDF/ U0080.pdf Pi in Greek and Coptic is 03A0 Hex. See page 2 of http:/ / www.unicode.org/ charts/ PDF/ U0370.pdf The double concentric circle character in Thai is 0E4F Hex. See page 2 of http:/ / www.unicode.org/ charts/ PDF/ U0E00.pdf Triple right arrows in Arrows is 21F6 Hex. See page 2 of http:/ / www.unicode.org/ charts/ PDF/ U2190.pdf Integers and Characters (26)

Unassessed Course Work 1 1. Convert 188 10 into binary, octal and hexadecimal. 2. Convert ABC 16 into binary, octal and decimal. 3. Add the following two 20-bit binary numbers. Spaces embedded in the numbers are for readability only. 1st number 1111 0000 1111 0000 1111 2nd number 1010 1010 1011 1111 1111 4. Using the two numbers in question 3, subtract the second binary number above from the first. 5. What is the square of 10101 2 in base 2? 6. What is 14 5 in base 1 (Unary)? 7. How many natural numbers can be represented by (i) 8-bits (ii) 10-bits (iii) 16-bits 8. For an 8-bit group, work out the representation for 37 10 in (i) sign & magnitude (ii) one's complement (iii) two's complement (iv) excess-256 (v) excess-128 9. For a 10-bit group, what range of integers can be represented using (i) sign & magnitude (ii) one's complement (iii) two's complement (iv) excess-512 10. Subtract the following 12-bit two s complement numbers (2nd from 1st) 1010 1010 1011 1011 0000 1101 What is the result in decimal? 11. Express 98765 10 in binary coded decimal (BCD) 12. Translate the following 6-character string A:= q*t to 8-bit ASCII codes, listing your codes as binary and hex values. Integers and Characters (27)