2 Computational Units
2 – 32
Two examples of denormalizing a double-precision number are given
below. The first shows a denormalization in which the upper half of the
number is shifted first, followed by the lower half. Since computations
may produce output in either order, the second example shows the same
operation in the other order, i.e. lower half first.
Always select the arithmetic shift for the higher half (HI) of the twos-
complement input (or logical for unsigned). Likewise, the first half
processed does not use the [SR OR] option.
Modifier = HI, No [SR OR], Shift operation = Arithmetic, SE = –3
First Input:
10110110 10100011
(upper half of desired result)
SR:
111 10110 11010100 011 00000 00000000
Now the lower half is processed. Always select a logical shift for the lower
half of the input. Likewise, the second half processed must use the
[SR OR] option to avoid overwriting the previous half of the output value.
Modifier = LO, [SR OR], Shift operation = Logical, SE = –3
Second Input:
01110110 01011101
(lower half of desired result)
SR:
11110110 11010100 011 01110 11001011
Here is the same input processed in the reverse order. The higher half is
always arithmetically shifted and the lower half is logically shifted. The
first input is passed straight through to SR, but the second half is ORed to
create a double-precision value in SR.
Modifier = LO, No [SR OR], Shift operation = Logical, SE = –3
First Input:
01110110 01011101
(lower half of desired result)
SR:
00000000 00000000 000 01110 11001011
Modifier = HI, [SR OR], Shift operation = Arithmetic, SE = –3
Second Input:
10110110 10100011
(upper half of desired result)
SR:
111 10110 11010100 011 01110 11001011