12.1. FIXEDPOINT BINARY FORMATS
Within digital hardware, numbers are represented
by binary digits known as bits—in fact, the term bit originated from the words Binary digIT. A single bit can be in
only one of two possible states: either a one or a zero.^{[]} A sixbit
binary number could, for example, take the form 101101, with the
leftmost bit known as the most
significant bit (msb), while the rightmost bit is called the
least significant bit (lsb). The
number of bits in a binary number is known as the word
length—hence 101101 has a word length of six. Like the decimal
number system so familiar to us, the binary number system assumes a
weight associated with each digit in the number. That weight is the
base of the system (two for binary numbers and ten for decimal
numbers) raised to an integral power. To illustrate this with a
simple example, the decimal number 4631 is
^{[]} Binary numbers
are used because early electronic computer pioneers quickly
realized that it was much more practical and reliable to use
electrical devices (relays, vacuum tubes, transistors, etc.) that
had only two states, on or off. Thus, the on/off state of a device
could represent a single binary digit.
The factors 10^{3}, 10^{2},
10^{1}, and 10^{0} are the digit weights in Eq. (121). Similarly, the
sixbit binary number 101101 is equal to decimal 45 as shown by
Equation 122
Using subscripts to signify the base of a
number, we can write Eq.
(122) as 101101_{2} = 45_{10}. Equation (122) shows us
that, like decimal numbers, binary numbers use the place value system where the position of
a digit signifies its weight. If we use B to denote a number system's base, the
place value representation of the fourdigit number a_{3}a_{2}a_{1}a_{0} is
Equation 123
In Eq.
(123), B^{n} is the
weight multiplier for the digit a_{n}, where 0 a_{n} B–1. (This place value system of
representing numbers is very old—so old, in fact, that its
origin is obscure. However, with its inherent positioning of the
decimal or binary point, this number system is so convenient and
powerful that its importance has been compared to that of the
alphabet[1].)
12.1.1 Octal Numbers
As the use of minicomputers and microprocessors
rapidly expanded in the 1960s, people grew tired of manipulating
long strings of ones and zeros on paper and began to use more
convenient ways to represent binary numbers. One way to express a
binary number is an octal format, with its base of eight.
Converting from binary to octal is as simple as separating the
binary number into threebit groups starting from the right. For
example, the binary number 10101001_{2} can be converted to
octal format as
Each of the three groups of bits above are
easily converted from their binary formats to a single octal digit
because, for threebit words, the octal and decimal formats are the
same. That is, starting with the left group of bits, 10_{2}
= 2_{10} = 2_{8}, 101_{2} = 5_{10}
= 5_{8}, and 001_{2} = 1_{10} =
1_{8}. The octal format also uses the place value system
meaning that 251_{8} = (2 · 8^{2} + 5 · 8^{1} + 1 · 8^{0}). Octal format
enables us to represent the eightdigit 10101001_{2} with
the threedigit 251_{8}. Of course, the only valid digits
in the octal format are 0 to 7—the digits 8 and 9 have no
meaning in octal representation.
12.1.2 Hexadecimal Numbers
Another popular binary format is the hexadecimal
number format using 16 as its base. Converting from binary to
hexadecimal is done, this time, by separating the binary number
into fourbit groups starting from the right. The binary number
10101001_{2} is converted to hexadecimal format as
If you haven't seen the hexadecimal format used
before, don't let the A9 digits
confuse you. In this format, the characters A, B, C, D, E, and F
represent the digits whose decimal values are 10, 11, 12, 13, 14,
and 15 respectively. We convert the two groups of bits above to two
hexadecimal digits by starting with the left group of bits,
1010_{2} = 10_{10} = A_{16}, and 1001_{2} =
9_{10} = 9_{16}. Hexadecimal format numbers also
use the place value system, meaning that A9_{16} = (A · 16^{1} + 9 · 16^{0}). For
convenience, then, we can represent the eightdigit
10101001_{2} with the twodigit number A9_{16}. Table 121 lists the permissible digit
representations in the number systems discussed thus far.
12.1.3 Fractional Binary Numbers
Fractions (numbers whose magnitudes are greater
than zero and less than one) can also be represented by binary
numbers if we use a binary point identical in function to our
familiar decimal point. In the binary numbers we've discussed so
far, the binary point is assumed to be fixed just to the right of
the rightmost digit. Using the symbol to denote the binary
point, the sixbit binary fraction 11_{} 0101 is equal to
decimal 3.3125 as shown by
Equation 124
Table 121. Allowable Digit
Representations vs. Number System Base
Binary

Octal

Decimal

Hexadecimal

Decimal
equivalent

0

0

0

0

0

1

1

1

1

1


2

2

2

2


3

3

3

3


4

4

4

4


5

5

5

5


6

6

6

6


7

7

7

7



8

8

8



9

9

9




A

10




B

11




C

12




D

13




E

14




F

15

For the example in Eq. (124), the binary point is set between
the second and third most significant bits. Having a stationary
position for the binary point is why binary numbers are often
called fixedpoint binary.
For some binary number formats (like the
floatingpoint formats that we'll cover shortly), the binary point
is fixed just to the left of the most significant bit. This forces
the number values to be restricted to the range between zero and
one. In this format, the largest and smallest values possible for a
bbit fractional word are
1–2^{–}^{b} and 2^{–}^{b}, respectively. Taking a
sixbit binary fraction, for example, the largest value is
_{}111111_{2}, or
Equation 125
which is in
decimal. The smallest nonzero value is _{}000001_{2},
equaling a decimal .
12.1.4 SignMagnitude Binary
Format
For binary numbers to be at all useful in
practice, they must be able to represent negative values. Binary
numbers do this by dedicating one of the bits in a binary word to
indicate the sign of a number. Let's consider a popular binary
format known as signmagnitude. Here, we assume that a binary
word's leftmost bit is a sign bit and the remaining bits represent
the magnitude of a number which is always positive. For example, we
can say that the fourbit number 0011_{2} is
+3_{10} and the binary number 1011_{2} is equal to
–3_{10}, or
Of course, using one of the bits as a sign bit
reduces the magnitude of the numbers we can represent. If an
unsigned binary number's word length is b bits, the number of different values
that can be represented is 2^{b}. An eightbit word, for
example, can represent 2^{8} = 256 different integral
values. With zero being one of the values we have to express, a
bbit unsigned binary word can
represent integers from 0 to 2^{b}–1. The largest value
represented by an unsigned eightbit word is 2^{8}–1 =
255_{10} = 11111111_{2}. In the signmagnitude
binary format a bbit word can
represent only a magnitude of ±2^{b}^{–1}–1,
so the largest positive or negative value we can represent by an
eightbit signmagnitude word is ±2^{8–1}–1
= ±127.
12.1.5 Two's Complement Format
Another common binary number scheme, known as
the two's complement format, also
uses the leftmost bit as a sign bit. The two's complement format is
the most convenient numbering scheme from a hardware design
standpoint, and has been used for decades. It enables computers to
perform both addition and subtraction using the same hardware adder
logic. To get the negative version of a positive two's complement
number, we merely complement (change a one to a zero and change a
zero to a one) each bit and add a one to the complemented word. For
example, with 0011_{2} representing a decimal 3 in two's
complement format, we obtain a negative decimal 3 through the
following steps:
In the two's complement format, a bbit word can represent positive
amplitudes as great as 2^{b}^{–1}–1,
and negative amplitudes as large as –2^{b}^{–1}. Table 122 shows fourbit
word examples of signmagnitude and two's complement binary
formats.
While using two's complement numbers, we have to
be careful when adding two numbers of different word lengths.
Consider the case where a fourbit number is added to a eightbit
number:
Table 122. Binary Number Formats
Decimal
equivalent

Signmagnitude

Two's
complement

Offset
binary

7

0111

0111

1111

6

0110

0110

1110

5

0101

0101

1101

4

0100

0100

1100

3

0011

0011

1011

2

0010

0010

1010

1

0001

0001

1001

+0

0000

0000

1000

–0

1000

—

—

–1

1001

1111

0111

–2

1010

1110

0110

–3

1011

1101

0101

–4

1100

1100

0100

–5

1101

1011

0011

–6

1110

1010

0010

–7

1111

1001

0001

–8

—

1000

0000

No problem so far. The trouble occurs when our
fourbit number is negative. Instead of adding a +3 to the +15,
let's try to add a –3 to the +15:
The above arithmetic error can be avoided by
performing what's called a signextend operation on the fourbit
number. This process, typically performed automatically in
hardware, extends the sign bit of the fourbit negative number to
the left, making it an eightbit negative number. If we signextend
the –3 and, then perform the addition, we'll get the correct
answer:
12.1.6 Offset Binary Format
Another useful binary number scheme is known as
the offset binary format. While
this format is not as common as two's complement, it still shows up
in some hardware devices. Table 122 shows offset binary format
examples for fourbit words. Offset binary represents negative
numbers by subtracting 2^{b}^{–1} from an
unsigned binary value. For example, in the second row of Table 122, the offset
binary number is 1110_{2}. When this number is treated as
an unsigned binary number, it's equivalent to 14_{10}. For
fourbit words b = 4 and 2^{b}^{–1} = 8, so
14_{10} – 8_{10} = 6_{10}, which is
the decimal equivalent of 1110_{2} in offset binary. The
difference between the unsigned binary equivalent and the actual
decimal equivalent of the offset binary numbers in Table 122 is always
–8. This kind of offset is sometimes referred to as a bias when the offset binary format is
used. (It may interest the reader that we can convert back and
forth between the two's complement and offset binary formats merely
by complementing a word's most significant bit.)
The history, arithmetic, and utility of the many
available number formats is a very broad field of study. A thorough
and very readable discussion of the subject is given by Knuth in
Reference [2].
