假设我有0.128或0.008。分数不能用二进制定点表示,所以我不知道如何找出尾数以便将其转换为浮点。
假设我有int 100,浮点二进制字符串将是: 01000010110010000000000000000000。 我想为0.128做同样的事,但我不知道要对这个分数进行舍入,因为我需要这个用于manttissa。
答案 0 :(得分:1)
试试这个浮点位converter它应该可以帮助你理解它是如何工作的。
示例:
目标编号3.75
将其转换为2的幂(积分部分是正功率之和,分数是负功率之和)
5.75 = 1 * 2 ^ 2 + 0 * 2 ^ 1 + 1 * 2 ^ 0 + 1 * 2 ^( - 1)+ 1 * 2 ^( - 2) 或以二进制形式
101.11
规范化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相当于向左移位,或者将点移动到右边的一位数,因此移动到第一个小数位的整数部分。