Lecture 5 Topics Sec 1.4 Representing Information as Bit Patterns Representing Text Representing Numeric Values Representing Images Sec 1.6 Storing Integers Two’s Complement Notation Excess Notation Representing Text Each character (letter, punctuation, etc.) is assigned a unique bit pattern. ASCII: Uses patterns of 7-bits to represent most symbols used in written English text Unicode: Uses patterns of 16-bits to represent the major symbols used in languages world side ISO standard: Uses patterns of 32-bits to represent most symbols used in languages world wide Figure 1.12 The message “Hello.” in ASCII Representing Numeric Values Binary notation: Uses bits to represent a number in base two Limitations of computer representations of numeric values Overflow – occurs when a value is too big to be represented Truncation – occurs when a value cannot be represented accurately Representing Images Images are stored using a variety of formats and compression techniques The simplest representation is a bitmap Bitmaps partition an image into a grid of picture elements, called pixels, and then convert each pixel into a bit pattern Resolution refers to the sharpness or clarity of an image bitmaps that are divided into smaller pixels will yield higher resolution images the left image is stored using 96 pixels per square inch, and the right image is stored using 48 pixels per square inch the left image appears sharp, but has twice the storage requirements Storing Integers Integers are categorized as: Signed Integers Unsigned Integers Signed are those that include positive as well as negative numbers While Unsigned are those that only represent positive numbers The range for Signed Numbers is reduced to half Signed Integers There are two ways to represent Signed Integers: Two’s complement notation: The most popular means of representing integer values Excess notation: Another means of representing integer values Both can suffer from overflow errors. Representing Negative Numbers Can use “+” and “-”, as usual. Decimal Binary +17 +10001 -17 -10001 But requires extra symbols. How can we use bits instead? Figure 1.21 Two’s complement notation systems 1-11 Two’s complement Notation Invert all bits, then add 1. Binary Binary 4-bit (1 bit sign + 3 bits magnitude) Decimal 4-bit (1 bit sign + 3 bits magnitude) Decimal 0 0000 0 1 0001 -1 1111 2 0010 -2 1110 3 0011 -3 1101 4 0100 -4 1100 5 0101 -5 1011 6 0110 -6 1010 7 0111 -7 1001 -8 1000 Two’s complement – it just works! + = 0011 (3 decimal) 0010 (2 decimal) 0101 (5 decimal ?) 1101 (-3 decimal) + 1110 (-2 decimal) 11011 (-5 decimal ?) = 0011 (3 decimal) + 1110 (-2 decimal) = 10001 (1 decimal ?) Problems with binary arithmetic Fixed number of bits can go out of range. 0011 (3 decimal) + 0111 (7 decimal) = 1010 (-6 decimal???) Overflow: When result can’t be represented within range of bits. Overflow occurs when the value that we compute cannot fit into the number of bits we have allocated for the result. In addition, if operands have same sign and sum doesn’t. Excess Notation Excess 8 notation indicates that the value for zero is the bit pattern for 8, that is 1000 The bit patterns are 4 bits long Positive numbers are above it in order and negative numbers are below it in order. Figure 1.24 An excess eight conversion table Excess Notation (continue) That is the zero point for Excess 128 notation is 128; the zero point for excess 64 notation is 64; and so forth. For example, let's say we want to determine the pattern for 15 in Excess 128 notation. The decimal number would be 128 + 15, or 143. Therefore, the bit pattern would be 10001111. Storing Fractions In contrast to storage of Integers the storage of fractions requires not only the representation of the magnitude by the radix point as well A popular way of doing this is based on scientific notation called Floating-Point Notation Binary Fractions (revisited) We use a radix point in the same role as the decimal point in decimal notation. That is, the digits to the left of the radix point represent the integer part of the value. The digits to the right represent the fractional part of the value. _ _ _ ._ _ _ 2 = 1/2 2 = 1/4 2 1 0 -1 -2 -3 2 2 2 2 2 2 2 = 1/8 Example: 101.101 is 5 5/8 and 101.01011 is 5 11/32 -1 -2 -3 Short Cut (Bin --- Decimal) Binary-to-decimal for the part after the point 1. 2. Convert binary digits as though there were no point. Divide result by 2#bits – e.g., if 7 bits converted, then divide by 27 = 128. E.g., .1101 – – 1101 = 13 So, .1101 = 13 24 = 13/16 = .8125 Figure 1.26 Floating-point notation components Look at Scientific Notation Let's look at some decimal numbers first, to get a feel for what needs to be done. First we need to know how many digits in the mantissa. Let's choose 5. Real 5 digits and an exponent Floating point 12001.00 12001 * 100 +.12001 * 105 -120.01 -12001 * 10-2 -.12001 * 103 0.12 12000 * 10-5 +.12000 * 100 15,555,555 15555 * 103 +.15555 * 108 The last example shows us one of the problems with floating-point notation – truncation error. Part of the value being stored is lost because the mantissa field is not large enough. Floating Point Notation Now let's switch to binary. Although a common standard uses 64 bits for a floating-point number: 1 bit for the sign, 11 bits for the exponent, and 52 bits for the mantissa, we will use an abbreviated version. Let's use one byte: 1 bit for the sign, 3 bits for the exponent, and 4 bits for the mantissa. The sign is easy enough 0 or 1. The exponent has 3 bits and must be either + or -. We could use 2's complement, but excess notation is used instead! 3 bits means excess 4 notation. That leaves 4 bits for the mantissa. Why excess notation? It gives the best range of exponents and ease of wiring the circuitry. Excess 4 Notation 000 001 010 011 100 101 110 111 0 – 4 = -4 1 – 4 = -3 2 – 4 = -2 3 – 4 = -1 4–4=0 5–4=1 6–4=2 7–4=3 How to convert ?? Determine the sign bit Convert the whole number to binary Convert the fraction to binary Move the radix to the left of the most significant digit (left-most non-zero digit) Determine the exponent in excess 4 notation Example: To store 1 1/8 we express it in binary notation and obtain 1.001 Copy the bit patterns into the mantissa field from left to right. Example 1 Examples: +2 3/4 This is positive so our sign bit is 0 2 is 10 3/4 is .11 This gives us 10.11 Move the radix two places to the left: .1011 So the exponent is +2: 110 in excess 4 Giving us: 0 110 1011 Example 2 -1.1875 This is negative so our sign bit is 1 1 is 1 .1875 is 3/16 giving us .0011 This gives us 1.0011: Because we have 4 bits we have to use 1.001: Move the radix one place to the left: .1001 So the exponent is +1: 101 in excess 4 Giving us: 1 101 1001 Example 3 What is 10111100 in decimal? Split it apart into its pieces: 1 011 1100 The sign is 1 or negative The exponent is 011 or -1 The mantissa is 1100. Move the radix one place to the left: .01100 giving us 3/8 Our number is -3/8