代表是标准的一部分?

这个问题在这里已经有了答案:

  • C和C ++标准对比特级整数表示和操作有何看法? 8个答案
  • C ++标准规定int,long类型的大小是什么? 24个答案

  • C标准在6.2.6.2节中讨论了整数类型的表示。

    它指定整数类型的二进制表示。 对于无符号类型,这些位分为值位和填充位。 填充位对值没有贡献; 不需要任何填充位。 对于签名类型,只有一个符号位。 带符号的类型可以用符号和幅度,二进制补码或补码表示(二进制补码几乎适用于现代系统)。

    位的排序以及填充位的存在和数量是由实现定义的。 (大多数现代实现没有填充位)。

    在C99中引入了填充位的概念以及对三个典型表示法的限制。

    按位运算符( <<>>& ,等)是根据构成操作数值表示的位来定义的,但对表示的要求足够具体,以至于在大多数情况下这是明确的。 对<<>>移位算子的描述具体说明,例如, E1 << E2的结果是E1 × 2 E2 ; 参见引用的N1570草案的第6.5.7节。

    C ++标准有一个非规范性的注释,说它允许二进制补码,1的补码和整数类型的有符号幅度表示,但似乎没有明确的声明,表示不允许其他表示。 它确实要求“整体类型的表示应通过使用纯二进制编码系统来定义值”。 您可以在C ++标准的N4296工作草案(或任何其他草案中,或者在标准本身中,如果您有一份副本)中看到血淋淋的细节。

    链接地址: http://www.djcxy.com/p/40405.html

    上一篇: representation is part of The Standard?

    下一篇: Minimum sizes for integral types