bit B(byte) KB
bit
比特、位,量度信息的最小单位,状态为 0 和 1
B(Byte)
字节,1B = 8bit
KB
千字节,1KB = 1024B
MB
兆字节
为什么 32 位 cpu 只支持 4G 内存?
准确的说是 cpu 的地址总线位宽为 32 位的时候最大只能支持 4G 的寻址
寻址就是 CPU 最大能查找多大范围的地址。CPU 的寻址以字节为单位 (字节是最小可寻址单位)
32 位 CPU 一次只能处理 32 位的数据(就是 4 个字节),2 的 32 次方 bit=4G,所以 32 位 CPU 支持的最大寻址空间就是 4G(不考虑使用 PAE——物理地址扩展技术),如果插了一根 8G 的内存条,超过 4G 的内存部分跟不用不到
C 语言中各个变量占用的内存大小
https://blog.csdn.net/sinan1995/article/details/79577106
16 位编译器
1
2
3
4
5
6
7char/unsigned char :1字节
char*:2字节
short int:2字节
int/unsigned int:2字节
long int:4字节
float:4字节
double:8字节32 位编译器
1
2
3
4
5
6
7
8
9char/unsigned char :1字节
char*:4字节
short int:2字节
int/unsigned int:4字节
long int:4字节
float:4字节
double:8字节
long long:8字节
long double:12字节64 位编译器
1
2
3
4
5
6
7
8
9char/unsigned char :1字节
char*:8字节
short int:2字节
int/unsigned int:4字节
long int:8字节
float:4字节
double:8字节
long long:8字节
long double:16字节
int
占用四字节,32 位,范围 -2^31 \~ 2^31-1
,而 long int
根据编译器不同,表示的范围从 32 位到 64 位,它可以保证至少 32 位。
long int
不是标准的 64 位整型,而long long
是,它在所有的编译器中都表示 64 位整型,表示范围 -2^63 ~ 2^63-1
关于 __int64:
在 C/C++中,64 为整型一直是一种没有确定规范的数据类型。现今主流的编译器中,对 64 为整型的支持也是标准不一,形态各异。一般来说,64 位整型的定义方式有 long long 和__int64 两种(VC 还支持_int64),而输出到标准输出方式有 printf(“%lld”,a),printf(“%I64d”,a),和 cout << a 三种方式。
float: 1bit(符号) + 8bit(指数位) + 23bit(尾数位)
double: 1bit(符号) + 11bit(指数位) + 52bit(尾数位)
浮点数值 = (符号)(1.尾数) * (2)^(带符号的指数)
上述公式的 1 和 2 就是这么规定的,不必太在意