1 位(bit)
数据存储的最小单位,在计算机系统中,位用0或1表示,CPU的位数是指CPU进行一次运算能处理的最大位数.
2 字符(character)
字符是计算机中使用的字母,数字,字和符号.
不同编码格式,字符占用资源分布:
序号 | 编码 | 占用内存 |
---|---|---|
1 | ASCII编码 | 一个英文字母字符占一个字节 |
2 | GBK编码 | 一个汉字占2个字节 |
3 | Unicode | 一个英文字母和一个汉字均占2字节,标点符号中英均占2个字节 |
3 | UTF-8编码 | 一个英文字母占一个字节,标点占1个字节,一个汉字占3~4个字节,标点占3个字节 |
4 | UTF-16编码 | 一个英文字母或一个汉字占2个字节,标点占2个字节 |
5 | UTF-32编码 | 任何字符都占4个字节 |
3 字节(byte)
计算机中计量存储容量的一种计量单位.
B:byte
换算关系:
序号 | 单位 | 换算关系 |
---|---|---|
1 | 字节 | 1B=8bits |
2 | 千字节 | 1KiB=1024B= 2 10 2^{10} 210B |
3 | 兆字节 | 1MiB=1024KB= 2 20 2^{20} 220B |
4 | 吉字节 | 1GiB=1024MB= 2 30 2^{30} 230B |
5 | 万亿字节 | 1TiB=1024GB= 2 40 2^{40} 240B |
6 | 千亿字节 | 1PiB=1024TB= 2 50 2^{50} 250B |
7 | 百亿字节 | 1EiB=1024PB= 2 60 2^{60} 260B |
8 | 十万亿字节 | 1ZiB=1024EB= 2 70 2^{70} 270B |
9 | 一亿亿字节 | 1YiB=1024ZB= 2 80 2^{80} 280B |
4 变量(variable)
序号 | 数据类型 | 存储空间 | 取值范围 |
---|---|---|---|
1 | char(字符) | 1byte=8bit | − 128 -128 −128~ 127 127 127或 0 0 0~ 255 255 255( 2 8 2^8 28=256) |
2 | unsigned char(无符号字符) | 1byte | 0 0 0~ 255 255 255 |
3 | signed char(有符号字符) | 1byte | − 128 -128 −128~ 127 127 127 |
4 | int(整型) | 2或4bytes | − 32768 -32768 −32768~ 32767 32767 32767 或 − 2 , 147 , 483 , 648 -2,147,483,648 −2,147,483,648~ 2 , 147 , 483 , 648 2,147,483,648 2,147,483,648( 2 16 2^{16} 216或 2 32 2^{32} 232) |
5 | unsigned int(无符号整型) | 2或4bytes | 0 65536 0~65536 0 65536 或 0 0 0~ 4 , 294 , 967 , 295 4,294,967,295 4,294,967,295 |
6 | short(短型) | 2bytes | − 32768 -32768 −32768~ 32767 32767 32767 |
7 | unsigned short(无符号短型) | 2bytes | 0 0 0~ 65535 65535 65535 |
8 | long(长型) | 4bytes | − 2 , 147 , 483 , 648 -2,147,483,648 −2,147,483,648~ 2 , 147 , 483 , 648 2,147,483,648 2,147,483,648 |
9 | unsigned long(无符号长型) | 4bytes | 0 0 0~ 4 , 294 , 967 , 295 4,294,967,295 4,294,967,295 |
10 | float(单精度浮点,6位有效数字) | 4bytes | 1.2 E − 38 1.2E-38 1.2E−38~ 3.4 E + 38 3.4E+38 3.4E+38 |
11 | double(双精度浮点,15位有效数字) | 8bytes | 2.3 E − 308 2.3E-308 2.3E−308~ 1.7 E + 308 1.7E+308 1.7E+308 |
12 | long double(长双精度浮点,19位有效数字) | 16字节 | 3.4 E − 4932 3.4E-4932 3.4E−4932~ 1.1 E + 4932 1.1E+4932 1.1E+4932 |
5 C语言版数据类型存储信息获取
- Demo
# include <stdio.h>
void getDataInfo();
int main(){
getDataInfo();
getchar();
return 0;
}
void getDataInfo() {
printf("char 存储空间:%lu bytes \n", sizeof(char));
printf("unsigned char 存储空间:%lu bytes \n", sizeof(unsigned char));
printf("signed char 存储空间:%lu bytes \n", sizeof(signed char));
printf("int 存储空间:%lu bytes \n",sizeof(int));
printf("unsigned int 存储空间:%lu bytes \n", sizeof(unsigned int));
printf("short 存储空间:%lu bytes \n", sizeof(short));
printf("unsigned short 存储空间:%lu bytes \n", sizeof(unsigned short));
printf("long 存储空间:%lu bytes \n", sizeof(long));
printf("unsigned long 存储空间:%lu bytes \n", sizeof(unsigned long));
printf("float 存储空间:%lu bytes \n", sizeof(float));
printf("double 存储空间:%lu bytes \n", sizeof(double));
printf("long double 存储空间:%lu bytes \n", sizeof(long double));
}
- 结果
char 存储空间:1 bytes
unsigned char 存储空间:1 bytes
signed char 存储空间:1 bytes
int 存储空间:4 bytes
unsigned int 存储空间:4 bytes
short 存储空间:2 bytes
unsigned short 存储空间:2 bytes
long 存储空间:4 bytes
unsigned long 存储空间:4 bytes
float 存储空间:4 bytes
double 存储空间:8 bytes
long double 存储空间:8 bytes
6 总结
- 掌握数据类型及数据换算关系,加深数据存储的理解;
- 了解数据存储形式,有助于对内存占用控制;
[参考文献]
[1]http://www.runoob.com/cprogramming/c-data-types.html
[2]https://baike.baidu.com/item/%E5%AD%97%E8%8A%82/1096318?fr=aladdin