在 C 中使用位域的正确方法是什么?

2023-12-31

我正在使用位字段来轻松访问我正在尝试为没有 FPU 的微控制器制作的浮点库。

问题是我似乎无法使其与位字段一起使用。看一看:

typedef struct
{
   union{
    unsigned long mantissa: 23;
    unsigned long exponent: 8;
    unsigned long sign: 1;
    float all;

      };

}_float __attribute__((__packed__));

问题是,当我尝试访问或更改任何内容时,它会将位字段分别视为距末尾 1、8、23 位。虽然它应该是从末尾开始 23 位,然后是 8 位,然后是最后一位。除非我完全误解了位域的使用。我以为使用packed可以解决问题,但正如你所看到的,它没有解决。

任何帮助将非常感激。我不止一次在谷歌搜索时被引导到这个网站,所以我抱有很高的期望。


您可能缺少联合内的结构。

typedef struct
{
    union{
       struct {
           unsigned long mantissa: 23;
           unsigned long exponent: 8;
           unsigned long sign: 1;
       } float_parts;
       float all;
    };
}_float __attribute__((__packed__));

请注意,尾数/指数和符号的顺序取决于 cpu 的字节顺序。

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

在 C 中使用位域的正确方法是什么? 的相关文章

  • 这种双重实例是否有害,或者根本没有必要?

    在仔细阅读遗留资源时 我发现了这一点 DataSet myUPC new DataSet myUPC dbconn getDataSet dynSQL Resharper 正确地将其中的 new Dataset 部分 灰显 并建议 删除多余
  • 有没有办法将所有内容都包含在 dbcontext 中?

    当查询一个DbContext急切加载时 需要Include Navigation 为了填充导航属性 然而 在某些情况下 我想简单地Include all实体的导航属性 有没有办法做到这一点 或者有办法做到这一点 我假设你可以反思 但我宁愿避
  • 井字游戏代码有助于改进

    这是我必须检查玩家在井字棋游戏中获胜的代码 这是一个很长的 if 语句 可以改进 该板由 9 个图片框组成 我是一名 C 初学者 pBox Image Player players Player playerTurn getImage ch
  • TCP客户端;网络流;异步读取; C#

    请原谅我对任务和异步缺乏了解 使用 TcpClient 类 我正在创建与可用服务器的连接 void async RunClientAsync TcpClient client new TcpClient try await client C
  • C++ 天花板函数的奇怪结果

    我一直在尝试天花板功能并得到一些奇怪的结果 如果我对十进制数乘以百执行 ceil 运算 我会得到一定的结果 但是 如果我直接对该乘法的结果执行 ceil 我会得到完全不同的输出 另一个问题是 这些不同的结果仅发生在某些数字上 任何帮助 将不
  • 如何在 C# 中启动文件

    编辑 我觉得自己像个白痴 我有一种感觉 像下面的答案会起作用 但没有看到任何与下面的答案类似的谷歌结果 所以当我看到这段复杂的代码时 我想它一定是这样的 我搜索并找到了这个Windows 列出并启动与扩展关联的应用程序 https stac
  • OpenGL,如何独立旋转对象?

    到目前为止我的代码 void display void glClear GL COLOR BUFFER BIT GL DEPTH BUFFER BIT Clear Screen And Depth Buffer glLoadIdentity
  • 找不到 HttpContextBase 命名空间

    public string GetCartId HttpContextBase context if context Session CartSessionKey null if string IsNullOrWhiteSpace cont
  • stl 集的 C# 等效项是什么?

    我想使用 C 将一些值存储在平衡二叉搜索树中 我查看了泛型命名空间中的集合 但没有找到与 stl 集合等效的集合 我可以使用什么通用集合 我不想存储键 值对 只是值 你可以使用HashSet http msdn microsoft com
  • 如何使用 C# 调用 REST API?

    这是我到目前为止的代码 public class Class1 private const string URL https sub domain com objects json api key 123 private const str
  • 有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录?

    有没有办法关闭 Hangfire 使用 Serilog 进行的日志记录 我们正在使用我们自己的抽象 我不希望在使用 Serilog 时来自 Hangfire 记录器的所有额外噪音 INIT call under web project na
  • dlopen 或 dlclose 未调用信号处理程序

    我在随机时间内收到分段错误 我注册了信号 但发生分段错误时未调用信号处理程序 include
  • 使用 MessagingCenter 和标准 .NET 事件处理程序向感兴趣的各方通知更改有什么区别?

    使用 MessagingCenter 和标准 NET 事件处理程序向感兴趣的各方通知更改有什么区别 下面演示了同一事物的两个 未经测试的 实现 public class FooClass public event EventHandler
  • 如何在C中递归地找到另一个字符串中的字符串位置?

    我们有一个任务来创建带有两个字符串参数的递归函数 原型应该是这样的 int instring char word char sentence 如果我们愿意调用函数 instring Word Another Word 它应该具有以下返回值
  • 使用 INF 文件 C++ 以编程方式安装驱动程序

    这里有人可以告诉我如何安装第 3 方设备驱动程序吗 如果提供了所有必需的文件 即 inf 文件 sys 等 则以编程方式进行 这 该解决方案应运行的最低操作系统是Windows2000 我尝试复制 inf文件放入Win文件夹 INF文件夹和
  • C++头文件问题

    我在处理类时尝试了一些 C 代码 这个问题出现在我身上 并且让我有点烦恼 我创建了一个包含类定义的头文件和一个包含实现的 cpp 文件 如果我在不同的 cpp 文件中使用此类 为什么要包含头文件而不是包含类实现的 cpp 文件 如果我包含类
  • 如何在 C# 中停止程序进一步执行

    string FirstName Console ReadLine if FirstName Length gt 12 Console WriteLine if FirstName Length lt 3 Console WriteLine
  • 为什么 C++ 元组如此奇怪?

    我通常创建自定义structs将不同类型的值分组在一起时 这通常很好 而且我个人发现命名成员访问更容易阅读 但我想创建一个更通用的 API 在其他语言中广泛使用元组后 我想返回类型的值std tuple但发现它们在 C 中使用比在其他语言中
  • 在运行时将项目添加到 ToolStrip

    您好 我有一个带有 收藏夹 菜单的 ToolStripMenu 我想在运行时在 WinForms 应用程序中添加子项目 我有一个 datagridview 右键单击它会显示一个包含 添加到收藏夹 选项的上下文菜单 当该事件被触发时 我想使用
  • 致命:所有操作都需要OperationId。请为路径的“获取”操作添加它

    我正在使用 AutoRest 从 swagger json 生成 api 的客户端 输出是 AutoRest code generation utility cli version 3 0 6187 node v10 16 3 max me

随机推荐

  • 如何从时间戳转换为 Mongo ObjectID

    我知道我们可以使用getTimestamp 从 ObjectId 中检索时间戳 但是有什么方法可以从时间戳生成 ObjectId 吗 更具体地说 如果我有一个输入month and year 然后我想将其转换为Mongo对象ID要在数据库中
  • 使用 jquery 遍历表格单元格

    我有一个包含可变数量列的表 我编写了一个函数来迭代每行中的每个单元格以执行以下操作 检查是否存在输入 检索输入的值 将饼图附加到条件 1 计算结果为 true 的任何单元格 这是我的代码 function addPieCharts var
  • Kubernetes minikube 教程后无法停止 10 个容器

    docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7523fd2c20c7 gcr io google containers k8s dns sidecar am
  • Drupal 7 示例模块,找不到页面,为什么?

    我编写了一个简单的测试模块示例 2个文件 test module test info 并在drupal 7模块中启用了它们 我清除了所有缓存 但当我尝试访问 localhost drupal hello 时 我得到 drupal 404 页
  • 如何在python中实现multiprocessing.Queue的LIFO?

    我了解队列和堆栈之间的区别 但是如果我生成多个进程并在它们之间发送消息multiprocessing Queue如何访问首先放入队列中的最新元素 您可以使用多处理管理器 https docs python org 3 library mul
  • 构建 Clojure 源代码的惯用方法[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对人们如何构建 Clojure 源代码感兴趣 由于习惯了 Java 我非常熟悉每个源代码文件一个类的范例 将所有数据和方法定义与适当的注释和注
  • Spring Security授权无需认证

    我有一个 Java JSF 2 Spring 3 Hibernate 4 Java EE 应用程序 它使用第三方库来对用户进行身份验证 我将所需的 CA 证书导入到 JVM 中 将第三个库添加到项目中并在 web xml 中进行配置 图书馆
  • 在 mechanize 中禁用 ssl 证书验证

    我是 python 新手 我试图使用 mechanize 访问网站 br mechanize Browser r br open https 172 22 2 2 这给了我以下错误 Traceback most recent call la
  • 如何动态调整静态 UITableViewCell 的大小? [复制]

    这个问题在这里已经有答案了 可能的重复 带有包装标签的静态表格单元格的动态高度 https stackoverflow com questions 11981071 dynamic height for static table cells
  • z-index 不适用于绝对位置

    我打开控制台 chrome firefox 并运行以下几行 body append div style width 100 height 100 background color black div body append div styl
  • 枚举和定义语句之间的区别

    在 C C 中使用 Define 语句和 enum 语句有什么区别 在 C 或 C 中使用它们时有什么区别 例如 什么时候应该使用 enum BUFFER 1234 over define BUFFER 1234 enum定义语法元素 de
  • 为什么引用计数器需要内存顺序限制?

    在示例中boost atomic the unref功能 void intrusive ptr release const X x if x gt refcount fetch sub 1 boost memory order releas
  • Vue html 注释处理

    我正在使用 Vue 生成一些 html 模板 我需要按照下面的代码包含 html 条件注释 var productTemplate new Vue el myApp div div class some content This is so
  • 库的 stylePreprocessorOptions,我应该放在 angular.json 中的哪里?

    我正在尝试使用stylePreprocessorOptions为了包含我的变量文件夹的路径对于图书馆项目像这样 stylePreprocessorOptions includePaths styles variables 然后我用 impo
  • 有没有什么技巧可以创建电视静态的 gif 动画,使其相对较小?

    提前道歉 但这并不是一个真正的 Photoshop 问题 相反 我试图想出一些令人信服的东西 但尽可能地利用 gif 格式的压缩和功能来生成尽可能小的动画文件 一些限制 它至少需要 20 或 30 帧 我尝试过使用更少的帧 因为它们基本上是
  • 工作树清理时出现结帐错误

    请 我收到错误 您对以下文件的本地更改将被签出覆盖 但我的工作树是干净的 有人知道这里发生了什么吗 git status On branch experiment nothing to commit working tree clean g
  • 如何排除 SOLR 查询中的字段

    我有一个 SOLR 查询 它应该获取我存储的所有字段 除了一个字段 说我有20字段 我需要硬编码吗19我想要获取的字段 fl f f f f 或者有没有办法做类似的事情 fl f f 代表字段名称 不幸的是 通过查询字符串删除字段名称的能力
  • 在 perl 中关闭 AutoCommit 的情况下调用 SELECT 语句时,SQLite 是否执行磁盘活动?

    我在磁盘文件中创建了一个新的 SQLite 数据库 并使用以下命令关闭了 AutoCommit my dsn dbi SQLite dbname folder path file db my user my password my dbh
  • PostCSS 错误:[object Object] 不是 PostCSS 插件

    错误来自于postcss插件 我想我可能写错了 我正在尝试添加cssnano and autoprefixer to the postcss plugin gulp node modules gulp postcss node module
  • 在 C 中使用位域的正确方法是什么?

    我正在使用位字段来轻松访问我正在尝试为没有 FPU 的微控制器制作的浮点库 问题是我似乎无法使其与位字段一起使用 看一看 typedef struct union unsigned long mantissa 23 unsigned lon