【问题标题】:Implementing a 64bit integer using 32bit integers使用 32 位整数实现 64 位整数
【发布时间】:2019-03-25 17:46:22
【问题描述】:

我正在实现规范中的 opcua 服务器。 Opcua 将日期时间编码为 64 位有符号整数。服务器将在不包含(支持)标准 64 位整数的 32 位嵌入式系统上运行。 我已经尝试在网上查找,但我看不到有关该主题的有用文章。我也知道浮点数可以从 IEEE 的开放标准中实现,但我似乎没有找到 64 位整数的标准化表示。 我在项目中使用 ansi C。 我在哪里可以获得某种材料和内容来帮助我开始这项任务?

【问题讨论】:

    标签: 64-bit 32bit-64bit ansi-c


    【解决方案1】:

    您可以使用 2 个 32 位整数完全实现 64 位整数,就像您可以从 2 个 1 位整数实现 2 位整数一样。换句话说,你所拥有的只是一个以 232 为底的 2 位“数字”数字。

    如果您知道如何仅使用数字 0-9 数数超过 9,那么您就知道如何仅使用“数字”0-232 数数超过 232 ,因为它是完全相同的东西。

    【讨论】:

    • 你介意分享一个小代码 sn-p 以便我可以在上面构建一些东西吗?
    • 234 = 4*10**0 + 3*10**1 + 2*10**2。通常,以b 为基数写成x_0 x_1 x_2 x_3 … x_n 的数字具有x_n * b**0 + x_n-1 * b**1 + x_n-2 * b**2 + … + x_0 * b**n 的值。通过将x_ny_nx_n-1y_n-1 等相加来执行两个此类数字的相加,如果结果大于b-1,则将任何溢出转移到下一个位置。乘法是按位置完成的,然后将中间结果相加。这基本上是小学的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 1970-01-01
    相关资源
    最近更新 更多