计算基数2,10和16中的浮点数

时间:2012-04-20 10:00:11

标签: floating-point

我正在阅读我的笔记并发现以下内容:

For every real number there are various ways of representing
it in such a way. Therefore, computers fix two parameters (so
they do not need to be stored, and arithmetic is more
convenient):

- the base b (normally, it is 2, 10 or 16) and
- the position of the decimal (or binary) point (by normalising
the mantissa such that it satisfies 1/b ≤ m < 1)

Example: Normalised representations for r := 12.25 are,
- for b = 2, r = 1 × 0.110001 × 2^4,
- for b = 10, r = 1 × 0.1225 × 10^2 and,
- for b = 16, r = 1 × 0.C4 × 16^1.

如何计算基数2,10和16中浮点数的值12.25。我不太确定讲师如何得出他的答案b = 2,b = 10和b = 16。

2 个答案:

答案 0 :(得分:5)

从示例中,您的讲师对“规范化”的定义似乎是将数字表示为+1或-1乘以某个x乘以基数上升到整数幂,其中x是小于的最大值1,产品等于所代表的数字。此外,x在基数中表示为数字。

例如,在基数2中考虑12.25。暂时坚持基数10,我们可以将12.25表示为1×12.25×2 0 或1×6.125×2 1 或1×3.0625×2 2 或1×1.53125×2 3 或1×.765625×2 4 或1×.3828125× 2 5 ,依此类推。其中,我们可以看到.765625是小于1的最大值,适合表格。因此,我们将12.25表示为1×.765625×2 4 。然后我们需要将.765625转换为基数2.

你可能已经在之前的课程中介绍了这一点,但我们可以这样做:将.765625乘以2(得到1.53125)并将整数部分(1)与分数(.53125)分开。将分数乘以2(1.0625)并再次分离(1和.0625)。重复使用新分数(0和.125)。继续重复,直到分数为零或你有多少个数字:0和.25,0和.5,1和0.列出你得到的整数:1 1 0 0 0 1.现在基数为2的数字你想要的是一个句号后跟那些数字:.110001。因此,根据你的讲师的定义标准化的基数2中的12.25是1×.110001×2 4

找到x的正确值的规则可以是:从指数为0开始。如果x大于1,则将其除以基数并将1加到指数中。如果x小于1 / base,则将其乘以基数并从指数中减去1。重复此操作,直到x介于1 / base和1之间(包括1 / base但不包括1,所以如果x等于1 / base则停止)。

对于12.25和十进制:从指数0开始。将12.25除以10(得到1.225)并将指数递增到1.再次除(.1225)并将指数递增到2.现在我们停止因为.1225介于1之间/ 10和1.

对于12.25和基数16:从指数0开始。将12.25除以16(得到.765625)并将指数递增为1.现在停止因为.765625介于1/16和1之间。

要将.765625转换为16:将.765625乘以16得到整数12(数字C)和分数.25。乘以.25乘以16得到整数4和分数0.分数为0,所以停止。 base-16数字为.C4,因此整个形式为1×.C4×2 1

有时,将使用“标准化”的其他定义。通常,我们不是将x调整到1 / base和1之间,而是将x调整到1和b之间。

答案 1 :(得分:4)

我们试图在不同的基础上代表12.25的数字。所以没有规范化。

二进制:

   12    - > 1100
   0.25  - > .01  (1 * (1/2)^2)
so 12.25   = 1100.01

对于Hex:

   12    - > C
   0.25  - > .4   (4 * (1/16)^1)
so 12.25   = C.4 

然后小数点与指数项一起移位。

希望有所帮助。

我想这不是答案,因为我没有描述任何方法。所以这里有一些关于这个主题的MathForums讨论的链接。

Long Division with Binary Numbers

Floating Point Binary Fractions

Dr. Math's FAQ on Bases

我仍然在寻找Base 16浮点分区的好指南

Base ConvertDigit Convert是可以使用浮点数的在线基础转换器。

网站使用Javascript,因此可以使用正在使用的算法。