C 中原始类型的位

Bits of the primitive type in C

嗯,刚开始学C,留给我的问题是,原始类型的位是怎么填的,比如int类型,比如有4个字节,就是32位,最多可以容纳4294967296。但是如果例如,我使用一个只占1个字节的值,其他位如何保留?

    #include <stdio.h>

    int main(void) {

        int x = 5; // 101 how the rest of the bits are filled
                   // which was not used?
         return 0;
    }

所有前导位将设置为 0,否则该值将不会是 5。有点,在今天的计算机中,只有两种状态,所以如果它不是 0 那么它就是 1 这将导致存储的值不同。所以假设你有 32 位

5 == 0b00000000 00000000 00000000 00000101
5 == 0x00000005

其余位用0存储。

int a = 356;

现在让我们把它转换成二进制。

 1     0    1     1     0   0   1   0   0

现在你得到了9位数。由于int分配了32位,所以剩下的23位用0填充。

所以内存中存储的值为

         00000000 00000000 00000001 01100100

您选择的类型决定了整数的大小,而不是您存储在变量中的值。

如果我们假设 int 在您的系统上是 32 位,那么值 5 将表示为 32 位数字。这是 0000000000000000000000000101 二进制或 0x00000005 十六进制。如果其他位有任何其他值,它将不再是数字 5,32 位大。