数据类型
定义:数据种类的划分
划分数据类型的必要性:选择合适的数据类型节约内存
常量
"在程序运行过程中", 不能改变的量
整型的常量形式:
123 //十进制的整型常量
0x123 //十六进制的整型常量
0123 //八进制的整型常量
常量指定类型:
0.9f //表示被识别为 float类型
123 //默认识别为 int类型
123L //识别为long类型
123LU //unsigned long
123LL //long long
123LLU //unsigned long long
字符型常量 :
'a' //字符常量 a这个常量 (注意是使用单引号' ')
变量
"在程序运行过程中", 能被改变的量
定义变量的语法:数据类型 变量名;
变量名
是一个名字 ——标识符
命名规则:
1.数字、字母、下划线组成
2.开头不能是数字
3.不能与关键字重名
4.不要和预处理命令 及 库函数名重名
例子:
int a_1;//正确命名
int 1_a; //错误命名,这个名字不合法
变量给值
int a = 10; //定义的同时给值 初始化
int a; a = 10; //先定义 ;后赋值
变量可变——变量实际上对应是一块可以被修改的空间
代码中出现的变量 或 常量 一定有对应的数据类型
浮点型常量 默认识别为 double 类型
大小端模式
小端: 高高低低
高位数据 存在 高地址(地址编号大) 处
低位数据 存在 低地址处
x86 体系结构 (电脑)—— 小端模式
51 单片机 ——大端模式
数据类型的大小
表示的是该数据类型 所占内存空间的字节数
int 4字节
short 2字节
long 8字节
long long 8字节
float 4字节
double 8字节
char 1字节
sizeof(运算数)
计算运算数所代表的数据类型占用的内存空间的字节数
运算数 可以是类型名 sizeof(int)
可以是变量名 sizeof(a)
可以是常量或表达式 sizeof(10) 或sizeof(a+10)
进制(进位的制度)
满几进1 就是几进制
计算机只能识别二进制
十进制(逢十进一)
符号:0、1、2、3、4、5、6、7、8、9
二进制(逢二进一)
符号:0、1
八进制(逢八进一)
符号:0、1、2、3、4、5、6、7
十六进制(逢十六进一)
符号:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
进制之间的转换
十进制 转二进制
方法: 除2取余法(辗转相除法)
二进制 转十进制
方法: 加权求和
二进制 转八进制
对应关系:1位八进制进制数 对应 3位 二进制数
二进制 转 十六进制
对应关系:1位十六进制进制数 对应 4位 二进制数
整数存储
计算机最终存储的都是补码形式
正数:原码 反码 补码 相同
123
0111 1011 //原码
0111 1011 //反码
0111 1011 //补码
负数:补码=反码 + 1
-7
1|000 0000 0000 0000 0000 0000 0000 0111 //原码
1|111 1111 1111 1111 1111 1111 1111 1000 //反码
1|111 1111 1111 1111 1111 1111 1111 1001 //补码
f f f f f f f 9
负数的反码 是 原码 的符号位不变 其余位按位取反
符号位(第一位)——有符号数 符号位:0 正1 负
0|000 0000 0000 0000 0000 0000 0000 0000
其他位:数值位
无符号——表示所有的二进制位 都是数值位
有符号 ——表示有一位(最高位)充当了符号位,其余位是数值位
浮点数的存储
例子:将12.125 存到计算机
1. 首先 将十进制形式的小数,写成 二进制形式的小数
整数:除2取余法。 小数部分:乘2取整法
12 --- 1100
0.125 * 2 = 0.25 --- 0
0.25 * 2 = 0.5 --- 0
0.5 * 2 = 1 --- 1
0.001
二进制形式
1100.001
2. 将二进制形式的小数 写成 科学计数法形式
1100.001 ——> 1.100001 * 2^3
3. 按照 IEEE 754 标准 存放
float
4字节 32个位
1位 | 8位 充当 指数位 | 23位
符号位 | | 尾数位
0 3 + 127(偏移量) 100001
0100 0001 0100 0010 0000 0000 0000 0000 // 12.125 存到计算机中的样子
4 1 4 2 0 0 0 0
验证浮点数存储形式代码
double
1位 符号位|11位 指数位 |52位 尾数位
+1023
字符型
符号以二进制形式放到计算机中
'a' --计算机中保存实际上是这个符号 对应 ascii的编码值
编码:ASCII
0~32 控制字符(不可见字符)
48~57 数字字符 '0' ~ '9'
65~90 英文的26个大写 字母的符号
97~122 英文的26个小写 字母的符号
英语字母:大写 转 小写 +32