Floating point 如何将分数转换为浮点?

Floating point 如何将分数转换为浮点?,floating-point,computer-science,Floating Point,Computer Science,假设我有0.128或0.008。分数不能用二进制定点表示,所以我不知道如何找出尾数,以便将其转换为浮点 假设我有int 100,则浮点二进制字符串为: 01000010110010000000000000000000. 我想对0.128做同样的处理,但我不知道如何对分数进行四舍五入,因为我需要对manttissa进行此操作。尝试使用此浮点对其进行位运算,它将帮助您了解其工作原理 例如: 目标数3.75 将其转换为2的幂(整数部分为正幂和,小数部分为负幂和) 5.75=1*2^2+0*2^1+1*

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

假设我有int 100,则浮点二进制字符串为: 01000010110010000000000000000000. 我想对0.128做同样的处理,但我不知道如何对分数进行四舍五入,因为我需要对manttissa进行此操作。

尝试使用此浮点对其进行位运算,它将帮助您了解其工作原理

例如:

目标数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


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

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

    请注意,只有两个负幂之和的分数才会有精确的表示形式。你会发现,以小数为基数的小数是周期性的

    从您的示例中,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相当于向左移动,或将点向右移动一位,从而将第一个小数位数移动到整数部分。

    这些已经是浮点。是否要将浮点转换为分数?为什么
    汇编
    标记与此相关?@Anton那么您使用的是哪种汇编语言?它们有很多,它们之间可能有很大的不同。你有试过的东西吗?如果是的话,你能发布代码吗?你被困在哪里了?是的,你问的问题更清楚了。谢谢。:-)如果您有字符串“0.128”,请删除小数点并转换为整数128,然后除以1000。