在计算机内部,经常需要表示分数。例如,可能需要在计算机内部表示一个+0.610或-0.610的值。为了表示有符号的分数,有必要在位序列中紧接MSB之后假设二进制点。假定二进制点在位序列中位于固定位置的数字称为固定点数字。
无符号分数将在最左端具有假定的二进制点。SM,1的补码和2的补码小数将在MS位的右侧具有这个虚构的二进制点。
如果虚点在最右端,则数字为整数。如果虚数二进制点在无符号数的最左端,则该数字是无符号小数。如果二进制点位于MS位的最右边,则该数字为带符号的分数。如果二进制点在位序列的中间,则该数字具有整数和小数部分。
让我们讨论2的补数分数。例如,如果解释为2的补数部分,则值为1 001,如下所示-假设MS位后为二进制点,则为1.001。由于MS位为1,因此为负数。这样,其余位将不会直接指定幅度。1 001的2的补码为0110 + 1 =0111。这是一个正分数,值为1×2 -1 +1×2 −2 +1×2 -3 = 0.5 + 0.25 + 0.125 = 0.875(十进制)。因此,-0.875是1001的值。
如果字长为n位,则可以表示的最小幅度非零分数为2 (n-1)。可以表示的字长和最小幅度分数的表,如下所示。
字数 | 最小2的补数分数 |
---|---|
4 | ±0.125 |
8 | ±0.0078125 |
16 | ±0.0000305 |
32 | ±0.5×10 -9 |
最小字长必须为8位,才能在一定程度上准确地表示数字-0.0123。如果进一步增加单词大小,则准确性将大大提高。