首页 > 解决方案 > 将 int 转为 IEEE 754,提取指数,并将指数加 1

问题描述

问题

我需要在不使用*+运算符或其他库的情况下乘以一个数字,只需要二进制逻辑

要使用 IEEE 规范将数字乘以 2,请在指数上加 1,例如:

12 = 1 10000010 100000(...)

所以指数是:10000010(130)

如果我想将它乘以 2,我只需将它加 1,它就变成了10000011(131)。

问题

如果我得到一个浮点数,我如何把它变成二进制,然后是 IEEE 规范?示例: 8.0 = 1000.0在 IEEE 中,我需要它在左侧只有一个数字,所以1.000 * 2^3. 那我怎么加一个所以我乘以2呢?

我需要一个浮动,即。6.5

转成二进制110.1

然后到 IEEE 7540 10000001 101000(...)

提取指数10000001

给它加一个10000010

将其返回到 IEEE 7540 10000010 101000(...)

然后回到漂浮13

标签: c

解决方案


也许不完全是您正在寻找的东西,但 C 有一个库函数ldexp可以完全满足您的需求:

double x = 6.5;
x = ldexp(x, 1); // now x is 13

推荐阅读