在 VBA 中从 IEEE-754 双精度数中提取尾数、指数和符号数据

2023-12-27

如何在 VBA 中从 IEEE-754 64 位(双精度)浮点数中提取尾数、指数和符号数据?谢谢

Edit(约翰科尔曼评论后)。在发布原始问题之前,我已经四处寻找解决方案,但只能找到如何在 C 中执行此操作(例如使用具有位字段的结构)。找不到 VBA 的任何内容。我尝试过使用 VBA 的位运算符(即 AND、OR、NOT、XOR),但这似乎没有给出预期的结果。例如,以单精度 IEEE 32 位浮点数表示的 1 表示为

0 01111111 00000000000000000000000

其中第一位用于符号,接下来的 8 位用于(有偏差的)指数,最后 23 位用于尾数。将 NOT 应用于 1 应该返回

1 10000000 11111111111111111111111

十进制为 -3.9999998,但 VBA 中的以下代码返回 -2,表示为

1 10000000 00000000000000000000000

x = Not 1!
Debug.Print x

我没有看到在我的 OP 中发布此内容的意义。


我想我已经找到了做到这一点的方法。以下功能DoubleToBin返回表示 IEEE-754 双浮点数的 64 位字符串。它使用 VBA“技巧”通过组合来传递原始数据,而不使用 API 例程(例如 MemCopy (RtlMoveMemory))LSet具有相同大小的用户定义类型。一旦我们有了位串,我们就可以从中提取所有组件。

Type TDouble
  Value As Double
End Type

Type TArray
  Value(1 To 8) As Byte
End Type

Function DoubleToArray(DPFloat As Double) As Variant
  Dim A As TDouble
  Dim B As TArray
  A.Value = DPFloat 
  LSet B = A
  DoubleToArray = B.Value
End Function

Function DoubleToBin(DPFloat As Double) As String
  Dim ByteArray() As Byte
  Dim BitString As String
  Dim i As Integer
  Dim j As Integer

  ByteArray = DoubleToArray(DPFloat)

  For i = 8 To 1 Step -1
    j = 2 ^ 7
    Do While j >= 1
      If (ByteArray(i) And j) = 0 Then
        BitString = BitString & "0"
      Else
        BitString = BitString & "1"
      End If
      j = j \ 2
    Loop
  Next i

  DoubleToBin = BitString
End Function

这里是如何运作的——我现在接受我自己的答案吗?

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

在 VBA 中从 IEEE-754 双精度数中提取尾数、指数和符号数据 的相关文章

  • 如何同时在多个 Wksheet 中搜索某个字符串?

    我有大约 30 张工作表 我希望这些代码同时运行 我想找到 ABC 并删除所有工作表中它旁边的单元格的值 我的错误来自 Set rSearch range A1 range A rows count end x1up 当我在 With 语句
  • Excel IE 自动化识别“css”元素

    仍然在抓取网站 从网页打印等方面进行掠夺 但遇到了一个障碍 我希望有人可以帮助我 下图显示了我想要激活的选项卡 我有代码可以到达那里 但无法激活该选项卡 虽然最后一行代码可以在我的台式电脑上运行 但我无法让它在我的其他电脑上运行 我可能可以
  • 如何从有条件的列中获取最新值

    我在 Excel 中有一个表 其中包含以下列 Date 人名 金额 英镑 该表用于记录人们何时付钱给我 通常 我可以让不止一个人在同一天向我付款 而且 随着时间的推移 同一个人会在很多天向我付款 记录添加到表格底部 以便按日期排序 但不再按
  • Java BigDecimal 区别

    我想看看是否有人可以解释为什么以下代码适用于 valueOf 而不适用于其他代码 import java math BigDecimal public class Change public static void main String
  • Excel 单元格对齐:例如数值xlLeft、xlRight 还是 xlCenter?

    我一直在尝试对齐 Excel 单元格文本值 我尝试过更常见的xlLeft xlRight但这似乎不起作用 错误是xlLeft没有宣布 我正在使用 Visual Studios 并使用 VB 创建一个 aspx 页面 这是我的代码示例 Dim
  • 我怎样才能优化这个vba循环代码?

    嗨 我写了这段代码 但这段代码非常慢 我该如何优化这段代码 Private Sub printItem r lastCol objStream FirstCol 1 Dim strFirst As String strFirst CStr
  • 如何使用 VBA 在 Excel 中搜索单词然后删除整行? [复制]

    这个问题在这里已经有答案了 请有人帮忙 我正在尝试编写一个 VBA 代码 在 Excel 工作表 D 列中搜索特定单词 DR 然后删除整行 工作表中特定单词多次出现 我想做的就是搜索这些出现的情况 然后删除包含这些单词的整行 我的问题是我不
  • 如何在vba中查找命名形状的索引号

    我运行了以下代码 for i 1 to activedocument Shapes count debug Print activedocument shapes i name next 并获得了形状列表 但是缺少一个形状 我选择了一个未包
  • 替换VBA中的变量字符串

    我需要替换字符串中的某些内容 但替换的内容可能会有所不同 有可能 XY test XXxY test XXyyXx TEST yXyy Test 以及几乎任何其他空格和上述情况的组合 我需要替换 test 部分并保留 XXX 所以 当使用简
  • 用于替换格式但保留单元格值的 VBA:部分解决

    我正在尝试组合 VBA 来搜索特定的单元格格式 然后更改该单元格格式 我从这篇文章中得到了灵感 Excel VBA 值替换后仍保持字符串格式 https stackoverflow com questions 25825136 excel
  • Excel 2010 中隐藏行的宏

    我对 VBA 编程有点陌生 我在互联网上阅读了一些内容 但找不到我需要的内容或无法使其正常工作 我的问题 在工作表 表 1 的单元格 B6 中 给出了项目将被利用的年数 在工作表 sheet 2 和 sheet 3 中 我制作了 50 年的
  • 如何在没有任何数据行的情况下读取 Excel 表/ListObject 中的计算列的公式

    我有一个以外部查询作为数据源的 ListObject 它返回 18 列 ListObject 之前已添加了额外的 4 个计算列 现在 ListObject 有 0 个数据行 但是 虽然有 0 个数据行 但我似乎无法读取计算列的预定义公式 如
  • Excel HTTP 获取超时

    我们有这个小子 它只是将数据泵入远程服务器 一切都按预期进行 前几天 网络服务器发生了一次持续大约一个小时的事件 我仍然可以 PING 服务器 但 IIS 没有响应 结果 宏只是挂起等待响应 关于快速通过 失败测试或超时有什么想法吗 Sub
  • 在 VBA 中声明字典

    我收到错误Run time error 424 Object required当我尝试在 VBA 中创建字典时 我的代码如下所示 Private Sub data Dim dicti As Object Set dicti CreateOb
  • 在c#中使用OleDB读取excel文件?

    我正在构建一个程序来将 excel 文件读取到 dataGridView 中 using System using System Collections Generic using System ComponentModel using S
  • 条件格式化VBA多个条件

    我对 VBA 世界非常陌生 需要一些关于条件格式的 VBA 方面的帮助 1 我需要将条件格式应用于列 M 7岁以下绿色 黄色从7 20 红色大于20 最重要的条件是 如果列 N 声明 NOPO 则我不希望应用条件格式 我已经制定了一个公式来
  • 自动创建 Outlook 约会

    我有一个跟踪到期日期的电子表格 excel 2003 我想知道是否有办法让这些到期日期在 Outlook 中创建约会 提醒 到期日期位于电子表格的一个字段中 实体名称位于另一列中 理想情况下 我希望 Outlook 2003 能够获取日期
  • Java中的文字赋值[重复]

    这个问题在这里已经有答案了 定义上有什么区别 double example 23 1d or double example 23 1 为什么long float double可以以l f d结尾 之间没有区别double example 2
  • 在打开的Word文档中找到未知的姓名和姓氏,将其复制并使用excel VBA粘贴到excel .activesheet中的单元格A12中

    你好 Stackoverflow 社区 我的目标是编写一个宏 在之前打开 活动的 Word 文档中查找未知姓名 或两个名字都写成 Firstname Secondname 和姓氏 或两个姓氏写成 Firstsurname Secondsur
  • 修剪工作簿中的所有单元格(VBA)

    我尝试向一直在开发的 Excel 加载项添加功能 该功能会修剪已用单元格末尾的前导空格 甚至可能解析文本 我需要这样做的原因只是为了将其变成超链接我已经在工作了 但是那部分很好 这是我到目前为止所尝试的 我已经修剪了active works

随机推荐

  • 如何使图像在图像墙内反弹?

    我面临这个问题 在动画过程中 我希望鱼图像在背景图像 池塘 中移动 并且每当它撞到墙壁或图像边界时它就会弹开 使用svg方法和javascript方法 非常感谢任何可以提供帮助的人 再次感谢您花时间阅读并帮助解决这个问题
  • 如何将临时 MySQL 表转储到文件中?

    有没有一种方法可以创建转储 导出 保存临时 MySQL 表到磁盘上的文件中 sql 文件 类似于 mysqldump 创建的文件 抱歉 我第一次没有正确阅读这个问题 无论如何 我能想到的最好的方法就是使用SELECT INTO OUTFIL
  • mongodb 从一个值获取整个文档

    我想从单个值获取 mongodb 文档的所有值 例子 id id name name description description invite invite support server server developer develop
  • 同一行有多个命令

    我一直在尝试找到一些可以让我在 Vim 中的同一行上运行多个命令的东西 类似于在 nix 系统中使用分号来分隔命令或 在Windows中 有没有办法做到这一点 A bar 将允许你这样做 从 help bar 可用于分隔命令 因此您可以在一
  • IoC 容器的使用;特别是温莎

    我认为这个问题的答案是如此明显 以至于没有人费心写这个 但已经晚了 我真的无法理解这个问题 我一直在阅读 IoC 容器 在本例中为 Windsor 但我不知道如何从代码的各个部分与容器进行通信 我得到了 DI 我已经做了穷人 DI 空构造函
  • 在 scala 中将其别名为 self =>

    一些 Scala API 别名this to self 例如 trait Function1 T1 R extends AnyRef self gt 我知道该怎样this别名通常有效 但没有看到像 Function1 这样的特征如何从中受益
  • 清理大型遗留 Java 项目

    我被指派去做一个大型Java项目的一些工作 开发人员的几次迭代的影响是显而易见的 没有标准的编码风格 格式 命名约定或类结构 当我遇到 Javadoc 类时真是美好的一天 单元测试是一个快乐的白日梦 到目前为止 我们参与该项目的人员一直在
  • if 条件在 nginxconf 中的 location 块内如何工作?

    我读过了https www nginx com resources wiki start topics 深度 ifisevil https www nginx com resources wiki start topics depth if
  • 从 HttpClient SendAsync 请求获取响应时出现无法解释的超时和延迟

    我们有一个 NET 4 7 2 它混合使用异步和同步代码 我知道这是禁忌 我们在 Windows 服务上使用 NancyFX 该服务获取休息呼叫并进行休息呼叫 线程池看起来很健康 整个进程只使用了 70 个线程 由于某种原因 某些 http
  • 警告:def 文件末尾的 .drectve 已损坏

    我在 eclipse cdt c 中使用 gcc mingw 安装了 glew glfw 和 glm 全部都是静态的 一切正常 但我不喜欢 eclipse 输出控制台中的警告 警告 def 文件末尾的 drectve 已损坏 我如何修复并隐
  • ASCII 编码 UTF-8 的有效方法

    我正在寻找一种简单有效的方法来以 ASCII 7 存储 UTF 8 字符串 我所说的高效是指 输入中的所有 ASCII 字母数字字符应与输出中的 ASCII 字母数字字符保持相同 结果字符串应尽可能短 该操作需要可逆且不会丢失任何数据 生成
  • 如何在 ASP.NET MVC 4 应用程序中使用会话?

    我是 ASP NET MVC 新手 我以前使用过 PHP 很容易创建会话并根据当前会话变量选择用户记录 我在 Internet 上到处寻找简单的分步教程 该教程可以向我展示如何在 C ASP NET MVC 4 应用程序中创建和使用会话 我
  • 将张量组织成一批动态形状的张量

    我有以下情况 我想使用 Tensorflow Serving 部署人脸检测器模型 https www tensorflow org serving https www tensorflow org serving 在 Tensorflow
  • 寻找分区问题算法返回 true 的最大值子集

    我有以下任务 您有一个包含 1 假设S有两个子集s1和s2 其中一个子集所有元素的值之和等于另一个子集所有元素值之和 且为最大可能值 我必须返回 S 的哪些元素不会包含在两个子集中的任何一个中 它可能之前已经解决了 我认为它的一些变体分区问
  • Eclipse 动态 Web 项目文件位置

    我正在 Eclipse 中创建一个新的动态 Web 项目 并且想知道文件夹分类的最佳实践是什么 这就是我认为的 文件夹 有人可以验证一下吗
  • jQuery:获取父级、父级 ID?

    ul li a href www example com link a li ul 如何使用 jQuery 获取 ul myList 的 id 单击链接时会触发我的 j 脚本事件 我努力了 this parent attr id 但它获取了
  • 有关运行 Windows Phone 8 资源密集型任务的任何提示吗?

    我一直在尝试让资源密集型任务后台代理在部署到手机后以发布模式运行几天 但从未见过它运行 有人让它在调试器之外工作吗 你等了多久才运行 我能够使用 LaunchForTest 启动并成功运行资源密集型任务 但从未让它在发布模式下正常运行 即使
  • 通过打开包含内容的文本编辑器来捕获用户输入

    从 bash 脚本中 我想 打开当前用户的默认文本编辑器 粘贴字符串 original content in it 一旦用户修改内容然后关闭文本编辑器 将修改后的字符串捕获到变量中 modified content 然后保存 modifie
  • 我是否可以在前向声明中默认模板参数

    所以我试图了解 Boost 发生了什么ptree执行 在ptree hpp中basic ptree实际上定义为 template
  • 在 VBA 中从 IEEE-754 双精度数中提取尾数、指数和符号数据

    如何在 VBA 中从 IEEE 754 64 位 双精度 浮点数中提取尾数 指数和符号数据 谢谢 Edit 约翰科尔曼评论后 在发布原始问题之前 我已经四处寻找解决方案 但只能找到如何在 C 中执行此操作 例如使用具有位字段的结构 找不到