嵌入式学习第二天:数据结构

数据类型

定义:数据种类的划分

划分数据类型的必要性:选择合适的数据类型节约内存

常量

 "在程序运行过程中", 不能改变的量

整型的常量形式:
      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 
       
 

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值