我有一个浮点数的一小部分(例如-10.5中的5).这是一个角色,因为我从输入中提取了它.如何将该字符转换为该浮点数的二进制小数部分?(我正在构建一个浮点输入 - > 32位IEEE784的HEX输出,我已经提取了尾数的符号,指数和整数部分的二进制表示.)
我一直在考虑实现将分数乘以2并取余数的算法,然后重复直到填充尾数,但我不允许在赋值中使用任何浮点运算.
示例:用户输入-10.5.程序需要取数字的分数(即5)并将其转换为二进制格式(即1(.1))
编辑:我受到16位寄存器大小的限制,因此我需要一个解决方案来操作数字> 2 ^ 16-1.
你基本上有正确的想法.只需加倍小数部分,进位就成了数字.让我们尝试转换.7为二进制为例(.5太简单了)
NUMBER REMAINDER CARRY
.7 --- .
1.4 .4 1
.8 .8 0
1.6 .6 1
1.2 .2 1
.4 .4 0
.8 .8 0
1.6 .6 1
1.2 .2 1
&ct.
Run Code Online (Sandbox Code Playgroud)
所以.7二进制是.101100110.... 10.7就是这样1010.101100110...
一旦余数变为0,或者由于IEEE浮点精度的限制,总表示变为24位长,您可以停止转换为二进制.
请注意,十进制本身纯粹是装饰性的,这里不使用浮点数.
NUMBER %10 /10
7 --- .
14 4 1
8 8 0
16 6 1
12 2 1
4 4 0
8 8 0
16 6 1
12 2 1
&ct.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,.07你将代表剩余部分%100并/100分别进行.在.007你的情况下你会使用%1000和/1000.
| 归档时间: |
|
| 查看次数: |
1103 次 |
| 最近记录: |