标准化整数与浮点的转换

2024-04-06

我需要将标准化整数值与实际浮点值相互转换。例如,对于 int16_t,值 1.0 用 32767 表示,-1.0 用 -32768 表示。尽管对每个整数类型(有符号和无符号)执行此操作有点乏味,但手动编写仍然很容易。

然而,我想尽可能使用标准方法,而不是重新发明轮子,所以我正在寻找像标准 C 或 C++ 标头、Boost 库或其他一些小型、可移植、易于合并的东西已经执行这些转换的源。


这是一个使用模板的解决方案std::numeric_limits:

#include <cstdint>
#include <limits>

template <typename T>
constexpr double normalize (T value) {
  return value < 0
    ? -static_cast<double>(value) / std::numeric_limits<T>::min()
    :  static_cast<double>(value) / std::numeric_limits<T>::max()
    ;
}

int main () {
  // Test cases evaluated at compile time.
  static_assert(normalize(int16_t(32767)) == 1, "");
  static_assert(normalize(int16_t(0)) == 0, "");
  static_assert(normalize(int16_t(-32768)) == -1, "");
  static_assert(normalize(int16_t(-16384)) == -0.5, "");
  static_assert(normalize(uint16_t(65535)) == 1, "");
  static_assert(normalize(uint16_t(0)) == 0, "");
}

这可以处理有符号和无符号整数,并且 0 会标准化为 0。

View Successful Compilation Result https://ideone.com/4kIJtU

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

标准化整数与浮点的转换 的相关文章

随机推荐

  • 使用 Javascript 循环将 Leaflet GeoJSON 层从 GeoServer 添加到数组

    我正在尝试使用循环将 GeoJSON 图层添加到数组中 然后将它们显示在我的地图上 我的目标是拥有一个像这样的变量 场景 json 1 第 1 层 场景 json 2 第 2 层 等等 myURL http localhost 8080 g
  • 按位非运算符解释

    为什么按位非运算符 在大多数语言中 会像这样转换以下值 2 gt 1 1 gt 0 0 gt 1 1 gt 2 不应该 2转换成2 1转换成 1 etc See 二进制补码 http en wikipedia org wiki Two 27
  • 如何按名称查找 Eclipse 项目和文件夹?

    有没有办法在 Eclipse 工作区中按名称搜索文件夹 项目 结果最好在我可以执行批量操作 例如关闭 打开 分配工作集 的视图中返回 手动点击数百个项目的列表实在是太麻烦了 这个看似微不足道的任务让我感到悲伤 在我经历了这么多年的日食之后
  • 如何停止后台运行的 PHP 脚本

    我开始这个过程 time php
  • 取消 handler.postdelayed 进程

    我在用handler postDelayed 在我的应用程序的下一阶段发生之前创建一个等待期 在等待期间 我显示一个带有进度条的对话框 cancel button 我的问题是我找不到办法取消帖子延迟时间过去之前的任务 我这样做是为了发布延迟
  • VS Code 远程 SSH 连接不起作用

    我正在尝试在第二台电脑上使用远程开发扩展设置 vscode 虽然它适用于我的主要一台 但不适用于第二台 尝试重新安装 vscode 扩展并使用旧版本 但没有任何效果 尝试连接时 选择操作系统后会取消 所以我什至无法输入密码 我的设置方式与另
  • 为什么“导入模块”然后“从包导入模块”再次加载模块?

    我的 PYTHONPATH 中有一个包 看起来像这样 package init py module py print Loading module 如果我从以下位置运行 Pythonpackage 目录 或在此目录中写入另一个模块 并输入
  • 如何在 sql 中创建查询以将句子切分成单词并将它们及其频率添加到新表中

    我正在尝试执行一个查询 但不确定是否可行 我有一张桌子叫句子其中包含IS 句子和验证 如下图所示 我还有另一张桌子叫字数其中包含 ID 单词和出现频率 所以我希望每当一个句子输入更新或删除时 该表都会相应更新或每天更新 因为可能有很多句子
  • 返回带有对象名称 MVC 的 Json 结果

    当控制器返回 json 结果时 对象名称似乎丢失了 我通常不会介意 但 flexbox jquery 插件需要特定格式的 json 结果 Flexcombobox 预期格式 results id 1 name Ant id 2 name B
  • 使用新的日期时间 API 设置日期格式

    我正在使用新的日期时间 API 但运行时 public class Test public static void main String args String dateFormatted LocalDate now format Dat
  • Delphi XE2:如何使用序数值 > 255 的整数集

    我想做的就是定义一组值可能高于 255 的整数 但我没有看到任何好的选择 例如 with MyObject do Visible Tag in 100 155 200 225 240 Works just fine but with MyO
  • Django 和 uWSGI 的内部服务器错误

    我正在尝试按照本指南中的步骤操作 http uwsgi docs readthedocs org en latest tutorials Django and nginx html http uwsgi docs readthedocs o
  • 如果不需要的话 CSS 隐藏滚动条

    我正在尝试找出如何隐藏overflow y scroll 如果不需要 我的意思是 我正在构建一个网站 我有一个将显示帖子的主要区域 如果内容不超过当前宽度 我想隐藏滚动条 另外 我的第二个问题 我想做到这一点 以便当帖子超过当前宽度时 宽度
  • 将清单嵌入到 exe 文件中

    我有一个 manifest链接到的文件 exe程序文件 以便在打开时要求管理员权限 现在它是一个单独的文件 名为program name exe manifest这是与以下相同的文件夹program name exe 有什么方法可以将清单文
  • 通过宏/环境变量定义解决方案中的项目路径

    有没有办法使用用户宏 环境变量在解决方案中定义项目文件路径 我似乎无法做到这一点 有点像环境变量用于定义 C 项目中的附加包含目录 但我想对解决方案中项目文件的位置执行相同的操作 我尝试在文本编辑器中编辑解决方案以更改以 MyMacroNa
  • Fiddler 不解压缩 gzip 响应

    I use Fiddler调试我的应用程序 每当服务器压缩响应而不是解压缩响应时 Fiddler 都会显示不可读的二进制数据 Response to my request POST HTTP 1 1 200 OK Server xyz co
  • linq to sql loadwith 与 Associatewith

    loadwith 和 Associatewith 之间有什么区别 从我读到的文章看来 loadwith 用于加载附加数据 例如客户的所有订单 而AssociateWith用于过滤数据 这是正确的理解吗 如果有人可以用基于示例的解释来解释这一
  • Laravel 4:发布包的资产

    如何发布包资源 我在这里找到了一个教程 http laravel recipes com recipes 279 http laravel recipes com recipes 279 但是当我尝试从工作台发布资产时 出现以下错误 Run
  • PHP、MySQL:接收电子邮件,在数据库中自动搜索并根据结果发送电子邮件

    访客可以通过联系表联系工作人员 访客还需要提交电子邮件 这将存储在数据库中 现在考虑到工作人员回复此消息 工作人员的回复将直接发送到访客的电子邮件中 假设用户想要跟进工作人员发送的消息 我希望访问者只需点击电子邮件服务中的回复按钮 然后向我
  • 标准化整数与浮点的转换

    我需要将标准化整数值与实际浮点值相互转换 例如 对于 int16 t 值 1 0 用 32767 表示 1 0 用 32768 表示 尽管对每个整数类型 有符号和无符号 执行此操作有点乏味 但手动编写仍然很容易 然而 我想尽可能使用标准方法