如何将分数转换为浮点?

时间:2014-03-05 18:03:41

标签: floating-point computer-science

假设我有0.128或0.008。分数不能用二进制定点表示,所以我不知道如何找出尾数以便将其转换为浮点。

假设我有int 100,浮点二进制字符串将是: 01000010110010000000000000000000。 我想为0.128做同样的事,但我不知道要对这个分数进行舍入,因为我需要这个用于manttissa。

2 个答案:

答案 0 :(得分:1)

试试这个浮点位converter它应该可以帮助你理解它是如何工作的。

示例:

目标编号3.75

  1. 将其转换为2的幂(积分部分是正功率之和,分数是负功率之和)

    5.75 = 1 * 2 ^ 2 + 0 * 2 ^ 1 + 1 * 2 ^ 0 + 1 * 2 ^( - 1)+ 1 * 2 ^( - 2) 或以二进制形式

    101.11

  2. 规范化mantisa,所有数字应以1开头

    1.0111 * E ^ 2

答案 1 :(得分:1)

要将十进制数的小数部分转换为二进制,您可以将小数部分连续乘以2.每个乘积将在整数部分中生成0或1,这将是二进制表示的每个数字(在从左到右订购。

您可以继续乘法,直到小数部分为0,或直到您获得所需的位数(然后截断或舍入)。

请注意,只有作为2的负幂之和的小数才能具有精确的表示。您会发现具有几个数字的十进制数字在基数2中是周期性的。

从您的示例中,0.008的二进制表示将以0.00000010 ...

开头
0.008 x 2 = 0.016  First fractional digit is 0
0.016 x 2 = 0.032
0.032 x 2 = 0.064
0.064 x 2 = 0.128
0.128 x 2 = 0.256
0.256 x 2 = 0.512
0.512 x 2 = 1.024  First one
0.024 x 2 = 0.048
...

请注意,在基数2中乘以2相当于向左移位,或者将点移动到右边的一位数,因此移动到第一个小数位的整数部分。