Chapter 2
Representing and Manipulating
Information
Modern computers store and process information represented as two-valued signals. These lowly binary
digits, or bits, form the basis of the digital revolution. The familiar decimal, or base-10, representation has
been in use for over 1000 years, having been developed in India, improved by Arab mathematicians in the
12th century, and brought to the West in the 13th century by the Italian mathematician Leonardo Pisano
(c. 1170 – c. 1250), better known as Fibonacci. Using decimal notation is natural for ten-fingered humans,
but binary values work better when building machines that store and process information. Two-valued
signals can readily be represented, stored, and transmitted, for example, as the presence or absence of a
hole in a punched card, as a high or low voltage on a wire, or as a magnetic domain oriented clockwise or
counterclockwise. The electronic circuitry for storing and performing computations on two-valued signals
is very simple and reliable, enabling manufacturers to integrate millions, or even billions, of such circuits
on a single silicon chip.
In isolation, a single bit is not very useful. When we group bits together and apply some interpretation that
gives meaning to the different possible bit patterns, however, we can represent the elements of any finite set.
For example, using a binary number system, we can use groups of bits to encode nonnegative numbers. By
using a standard character code, we can encode the letters and symbols in a document. We cover both of
these encodings in this chapter, as well as encodings to represent negative numbers and to approximate real
numbers.
We consider the three most important representations of numbers. Unsigned encodings are based on tradi-
tional binary notation, representing numbers greater than or equal to 0. Two’s-complement encodings are
the most common way to represent signed integers,