C在内部使用哪个补码?

我查找的所有内容只是告诉我如何在 C 中进行补充运算/计算。

我想知道 C 在内部使用什么表示以及它如何处理溢出。

回答

C 允许有符号整数的 3 表示(https://port70.net/~nsz/c/c11/n1570.html#6.2.6.2p2):

  • 符号位为 0 的对应值被取反(符号和大小);
  • 符号位的值为 -(2M)(二进制补码);
  • 符号位的值为 -(2M- 1)(一个的补码)。

补码是最常见的。

无符号溢出环绕无符号的最大值。

有符号溢出会导致未定义的行为。即,假定它不会发生,并且如果您确实做到了,则不能保证您的程序的行为。

签名原子中的溢出是一个例外:它定义明确,并且在那里强制要求二进制补码:https ://port70.net/~nsz/c/c11/n1570.html#7.17.7.5p3 。


以上是C在内部使用哪个补码?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>