What part of integer bit-representation is part of The Standard?
本问题已经有最佳答案,请猛点这里访问。
关于整数在内存中的表示,我们可以假设多少?
位操作是如何将整数切片和拼接在一起的?
C标准讨论了第6.2.6.2节中整数类型的表示。
它指定整数类型的二进制表示形式。对于无符号类型,位分为值位和填充位。填充位对值不起作用;不必有任何填充位。对于有符号类型,有一个符号位。符号类型可以用符号和量值、二的补码或一的补码来表示(二的补码在现代系统中几乎是通用的)。
位的顺序以及填充位的存在和数量是实现定义的。(大多数现代实现没有填充位)。
C99中引入了填充位的概念以及对三种规范表示的限制。
位运算符(
C++标准有一个非规范的注释,它表示允许2的补码、1的补码和整数类型的符号幅值表示,但是似乎没有明确的声明,不允许其他表示。它确实要求"整数类型的表示应使用纯二进制数制来定义值"。您可以看到在N496的工作草案的C++标准(或任何其他草案,或在标准本身,如果你有一个副本)的血淋淋细节。