c - 将 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 有一个库函数ldexp
可以完全满足您的需求:
double x = 6.5;
x = ldexp(x, 1); // now x is 13
推荐阅读
- python - 从自定义回调中获取 Keras 模型输入
- html - 在文件名称中有空格的电子邮件正文中插入图片
- android - ListView:单击后将列表项保持在同一位置
- python - 有没有办法按值删除列表中的对象?
- javascript - 使用 PeerJs 进行直播
- e2e-testing - 在使用 nuxt-auth 遵循文档后,Nuxt.js 端到端测试错误
- python - 使用 matplotlib table.scale() 方法没有减少表格的行高
- spring - Spring Security 多个 UserDetailsService
- java - 在 Jenkins 中使用 Maven 解析 POM 文件时出错
- c# - 与包含文字的变量混合的文字的正则表达式是什么?