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 位大。
嗯,刚开始学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 位大。