(三)位,字符,字节及变量内存

1 位(bit)

数据存储的最小单位,在计算机系统中,位用0或1表示,CPU的位数是指CPU进行一次运算能处理的最大位数.

2 字符(character)

字符是计算机中使用的字母,数字,字和符号.
不同编码格式,字符占用资源分布:

序号编码占用内存
1ASCII编码一个英文字母字符占一个字节
2GBK编码一个汉字占2个字节
3Unicode一个英文字母和一个汉字均占2字节,标点符号中英均占2个字节
3UTF-8编码一个英文字母占一个字节,标点占1个字节,一个汉字占3~4个字节,标点占3个字节
4UTF-16编码一个英文字母或一个汉字占2个字节,标点占2个字节
5UTF-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)

序号数据类型存储空间取值范围
1char(字符)1byte=8bit − 128 -128 128~ 127 127 127 0 0 0~ 255 255 255( 2 8 2^8 28=256)
2unsigned char(无符号字符)1byte 0 0 0~ 255 255 255
3signed char(有符号字符)1byte − 128 -128 128~ 127 127 127
4int(整型)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)
5unsigned int(无符号整型)2或4bytes 0   65536 0~65536 0 65536 0 0 0~ 4 , 294 , 967 , 295 4,294,967,295 4,294,967,295
6short(短型)2bytes − 32768 -32768 32768~ 32767 32767 32767
7unsigned short(无符号短型)2bytes 0 0 0~ 65535 65535 65535
8long(长型)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
9unsigned long(无符号长型)4bytes 0 0 0~ 4 , 294 , 967 , 295 4,294,967,295 4,294,967,295
10float(单精度浮点,6位有效数字)4bytes 1.2 E − 38 1.2E-38 1.2E38~ 3.4 E + 38 3.4E+38 3.4E+38
11double(双精度浮点,15位有效数字)8bytes 2.3 E − 308 2.3E-308 2.3E308~ 1.7 E + 308 1.7E+308 1.7E+308
12long double(长双精度浮点,19位有效数字)16字节 3.4 E − 4932 3.4E-4932 3.4E4932~ 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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天然玩家

坚持才能做到极致

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值