代码之家  ›  专栏  ›  技术社区  ›  paxdiablo

如何在C语言中检测有符号整数的编码?

  •  15
  • paxdiablo  · 技术社区  · 15 年前

    在运行时(或者如果有更好的解决方案,其他时间)检测编码的有效或好方法是什么?我想知道这一点,以便我可以优化一个bignum库为不同的可能性。

    我计划在每次程序运行时计算这个值并将其存储在一个变量中,这样就不必盲目地快速-我假设在程序运行期间编码不会改变:-)

    5 回复  |  直到 15 年前
        1
  •  17
  •   Jens Gustedt    15 年前

    你只需要检查常量的低位 -1 比如说 -1 & 3

    1. 对于符号和大小,
    2. 补足

    #if #else

        2
  •  12
  •   Jerry Coffin    15 年前

    检测一个人的补体应该很简单——比如 if (-x == ~x) . 检测2的补码应该同样容易: if (-x == ~x + 1) . 如果两者都不是,那么它必须是符号/大小。

        3
  •  2
  •   Matthew Flaschen    15 年前

    许多的

        4
  •  0
  •   Andrew Cooper    15 年前

    获取指向一个int的指针,该int将显示一个独特的位模式。将其转换为指向无符号int的指针,然后检查位值。

    用几个精心选择的值来实现这一点,应该可以满足您的需要。

        5
  •  -1
  •   Arc    15 年前

    int 变成一个 char 数组大到足以容纳它,并将数组与各种表示形式进行比较以找出答案。

    推荐文章