【发布时间】:2011-04-18 16:03:03
【问题描述】:
ISO C 标准允许有符号整数的三种编码方法:二进制补码、二进制补码和符号/大小。
在运行时(或其他时间,如果有更好的解决方案)检测编码的有效或好方法是什么?我想知道这一点,以便针对不同的可能性优化 bignum 库。
我计划在每次程序运行时计算它并将其存储在一个变量中,这样它就不必非常快 - 我假设在程序运行期间编码不会改变:-)
【问题讨论】:
-
您永远不需要在运行时执行此操作 - 在针对特定架构进行编译时,这纯粹是一个编译时问题。
-
对于 bignum 库,您几乎总是需要无符号类型。虽然您可能能够对最高阶字使用有符号类型,但仅存储一个单独的符号位并始终使用正数可能更简单,然后根据符号位翻转加法/减法的意义。基本上是您自己的符号/幅度表示。
标签: c signed twos-complement ones-complement