本章学习目标:
1、认识存储单位:位bit和字节Byte
2、根据不同的应用场景选择符合需求的数据类型关键字,了解关键字的表示数据范围
1、内存单位
一、位
内存中的数据无论是文本、图像、音频还是视频,都是以位的形式进行存储的。
位是二进制数字系统中的一个基本单位,只能表示两种状态,即0或1。
内存单位中的“位”,也被称为“比特”(bit),是计算机存储和处理信息的最小单位。
二、字节
字节是常用的计算机存储单位,它由8个位组成。
除了字节外,还有更大的存储单位,如千字节(KB)、兆字节(MB)、吉字节(GB)、太字节(TB)等。
内存单位换算关系如下:
1字节 == 8位
1KB = 1024B (1024==2^10)
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
2、基本数据类型关键字
程序最终都是运行在在内存中的,因此学写代码首先要先学如何将数据放入到内存中,如何将数据从内存中读取出来。
按照实现中最常用的数据分类:整数 小数 字母
C语言将最基本的数据类型分为: 整型 、 实型 、 字符型 ,并且规定了一些特殊的单词来说明数据类型,即关键字。
一、整型
存储整数,比如:10 、 45 、 2000......
因为整数有大有小,为了节约内存,C语言将整型又分为:短整型、整型、长整型、长长整型,方便程序员使用大数据用大空间,小数据用小空间。
分类 | 短整型 | 整型 | 长整型 | 长长整型 |
关键字 | short | int | long | long long |
格式控制符 | %hd | %d | %ld | %lld |
字节数 | 2 | 4 | 4/8 | 8 |
注意:使用的时候自己按照自己的类型使用,不然可能出现一些异常的情况,如果不想记太多,只记int也可以。
接下来我们来讨论下数据类型的存储情况:
计算机里面存储数据除了数据类型外,还要考虑有无符号。
signed 与 unsigned:有符号与无符号 修饰基本数据类型
signed 修饰的数据类型可以描述正数也可以描述负数
unsigned 修饰的数据类型只能描述正数
例子:
signed int a; 有符号 可以存正整数和负整数 - 默认有符号,也可以直接写 int a;
unsigned int a; 无符号 只能存正整数
以short为例讨论这种数据类型的范围:
有符号:signed short 、short (signed默认是可以省略)
2个字节 == 16位
最高位:0表是正,1表示负
short正数范围:
0 000 0000 0000 0000 -- 0
0 111 1111 1111 1111 -- 32767
short负数范围:
1 000 0000 0000 0000 -- -0
1 111 1111 1111 1111 -- -32767
没有-0的表达向负方向扩展1为变成 - 32768
1 000 0000 0000 0000 -- -32768
short的范围:-32768~32767
无符号:unsigned short
没有符号位:2个字节 == 16位
0000 0000 0000 0000 --- 0
1111 1111 1111 1111 --- 65535
unsigned short的范围:0 ~ 65535
数据范围总结
long:只有在linux的64为下面是8个字节,其他都是4个字节
short | int | long | long long |
-32768~32767 | -21亿~21亿 | ------ | -18位10进制数~+18位10进制数 |
unsigned short | unsigned int | unsigned long | unsigned long long |
0~65535 | 0~42亿 | ------ | 0 ~ 19位10进制数 |
总结:
关键字的选取,需要考虑:
具体描述的是什么数据
空间存储情况(有无符号 占用字节大小)
十进制形式取值范围
二、实型
存储小数,比如:3.5 、 56.7 、 60.0 ......
分类 | 单精度 | 双精度 |
关键字 | float | double |
格式控制符 | %f | %lf |
字节数 | 4 | 8 |
小数点后的保留位数 | 6~8位 | 15~16位 |
三、字符型
存储单个字符,比如:'a' 、 '+' 、 ')' ......
注意:C语言里面严格区分 字符和字符串,字符为单个,用单引号''包含;字符串为多个字符,用""包含。
分类 | 字符型 |
关键字 | char |
格式控制符 | %c 或者 %d |
字节数 | 1 |
C语言存储字符是按照ASCII码表存储的,1个字符对应1个数字,因此存储字符实质上是存储了一个数字,因此字符可以当做整型数字使用。
char类型占据1个字节 == 8位,因此unsigned char的范围为:0 ~ 255;char类型的范围为:-128~127.
C语言不同的类型在内存中的存储方式是不一样的,因此在存取数据之前先要思考如何选择基本数据类型关键字。
3、基本数据类型关键字练习
1、说出数据的存储应该使用什么关键字:
a、存储班级人数
b、存储中国人数
c、存储世界人数
d、存储楼层
e、存储图书价格
f、存储身高体重
g、存储用户输入的当前贪吃蛇游戏的方向按键(wasd),每次只能接受一个方向字符