我想我知道如何将十进制数转换为IEEE 754单精度浮点表示,但我想确保。将大十进制数转换为浮点表示
我想表示IEEE 754单精度浮点表示中的3.398860921 x 10^18。我知道如何浮动代表。细分。
31日位:符号(0 +和1为 - ) 30-23th位数:表示指数 22-0th位数:表示尾数(有效位数)
所以签署显然是0,因为它是一个正数。对于指数我想出了这一点(通过添加18到127的偏差),并将指数表示为:1001 0001
对于尾数是3.398860921的部分,我不断将所有东西都乘以小数点右边如果它大于1,我将标记为1,否则为0.然后拿出新的答案,再次将所有内容都乘以小数点右边的2,直到我找到足够的位来填充尾数。
所以现在我有: 0 | 1001 0001 | 0110 0110 0001 1011 1011 111
所以当我转换成16进制表示,我得到0x48B30DDF但比我开始在3.398860921×10^18
是,应该是这样的或不同数量我在某个地方犯了什么错误?任何帮助将不胜感激。
为什么“加18”?指数是两个,而不是十个。 –
如果您只需要为实际上是整数的数字执行此操作,首先获取十进制整数字符串表示形式,将其转换为二进制形式,然后将二进制数字打包为浮点数可能会更容易。 –
1)那么我应该添加什么,而不是18到127呢? 2)所以你的意思是“3。398860921000000000“,并将其转换为二进制文件? – user2516663