在C++中检测一个或两个补码架构?

Vin*_*ent 9 c++ architecture twos-complement ones-complement c++11

检测架构是否在C++中使用一个或两个补码表示的最可靠方法是什么?

pau*_*sm4 5

您不必担心-那里没有太多的机器可以补充机器:)

但是,最简单的方法可能是将“ -1”与〜0进行比较。

  • @ R.MartinhoFernandes:是的。它们在二进制补码实现上是相等的,而不是在二进制补码(或符号幅度)实现上相等,因此可以用来测试使用哪种表示形式。 (7认同)
  • @LokiAstari `static_assert(-1==~0,"不是 2 的补码");` (4认同)
  • 符号幅度系统上的@plasmacel ~0 是 -INT_MAX 也不是 -1 (4认同)
  • 那么符号幅度表示呢? (2认同)