20240724嵌入式学习笔记

一.20240723补充:vim编辑器进阶

N "YY" + M "P"

命令模式下输入命令“YY”,可对光标下一行内容进行复制,在命令前加入数字N,则可以复制N行内容;输入命令“P”可以将复制过的内容粘贴至光标下一行。同样的,在“P”命令前加入数字M ,可以将以复制内容粘贴M次;

"SHIFT" + "V"

在命令模式下输入“SHIFT + V“,可以进入【visual block】模式,即块模式,。在该模式下可以通过方向键,以光标所在行为初始行,以行为单位进行选中。选中后可以通过”Y“ + M”P“命令进行复制粘贴。

N"DD" + M"P"

在命令模式下,通过输入”DD“,可对光标下一行内容进行剪切,在命令前加入数字N,则可以剪切N行内容;如若只进行剪切,不进行粘贴操作,则”DD“命令可以等效为删除。

"U" & "CTRL" + "R"

在命令模式下输入"U",可以撤销上一次操作;输入"CTRL" + "R",可以撤销上一次撤销命令,即反撤销。

二.数据类型

数据类型的含义是数据种类的划分,常见的数据类型有以下六种:整型、字符型、浮点型、构造数据类型、指针类型、空类型。

常量:在程序运行过程中,值不能被改变的量。

变量:在程序运行过程中,值可以被改变的量。

注意区分常量和变量需要将代码运行起来,在Linux命令行中具体表现形式即"./a.out"命令执行之后,到"linux@ubuntu:~$"出现之前,在这之间值不改变的量为常量,反之则为变量。

 整型(integer)

常量形式:

123      //十进制的整型常量
0x123    //十六进制的整型常量
0123     //八进制的整型常量

 进制:

常见进制有二进制、八进制、十六进制和自然世界中的十进制,分别用字母B、O、H和D表示,在代码中二进制用0b****来表示,八进制用0****表示,十进制直接用数字表示,十六进制用0x****表示。

十进制转换为二进制

辗转相除法,也称除二取余法:

2|123
       2|61      ... 1     (低位)
        2|30     ... 1 
         2|15    ... 0
          2|7    ... 1
           2|3   ... 1
            2|1  ... 1
             2|0 ... 1     (高位)
             
              111 1011
             0111 1011 

二进制转换为十进制采用的方法为加权求和法:

    1111011
    
    64	32  16  8   4   2   1
		               2^1 2^0
	1   1   1   1   0   1   1  
	
    64 + 2 + 16 + 8 + 2 + 1

二进制转换为八进制:

1位八进制数,对应3位二进制数

 H  0  1   2   3    4    5   6    7  
 B  0  1  10  11  100  101 110  111

二进制转换为十六进制:

1位十六进制数,对应4位二进制数

 B   0111 1011 0110 1101
 X	  7    b    6    d

整型变量:

变量名:

是一个名字、标识符

命名规则:

由数字、字母、下划线组成;开头不能为数字、不能与关键字重复、不要与预处理命令和库函数名重复。

数据类型的大小:

int、unsigned int                              4byte

short、unsigned short                      2byte

long、unsigned long                        8byte

long long、unsigned long long        8byte

sizeof(运算数)---计算运算数所代表的数据类型所占用的内存空间的字节数

变量给值:
int a = 10;    //定义时给值:格式化
int a; 
a = 10;    //赋值

变量之所以可以变化,因为变量实际上是对应的一块可被修改的空间。

数据在计算机中的存储方式分为大端模式和小端模式。

小端模式:高位数据存储在高地址空间,低位数据存储在低地址空间。

大端模式:高位数据存储在低地址空间,低位数据存储在高地址空间。

整型数据的存储:

默认使用小端模式

计算机中存储的数据都是他们的补码。

//正数补码=反码=原码
int a = 123;   
123
0111 1011 //原码
0111 1011 //反码
0111 1011 //补码
//负数
int a = -7;
-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  
//负数的反码是原码的符号位不变其余位按位取反

数据溢出:

各个类型整型变量有固定的取值范围,超出取值范围会发生数据溢出

  1111 1111 1111 1111
+                   1
----------------------
1 0000 0000 0000 0000   //溢出 

浮点型(float)

常量形式:

1.23、1.23e-4(科学计数法)、1.23E-4。

关键字:

float:单精度                    4byte

double:双精度                8byte

long double:高精度        16byte

浮点数的存储:

12.125存储到计算机

①将十进制形式的小数转换成二进制小数

        整数:除二取余

        小数:乘二取整

12.125   
    //整数
    12 --- 1100
    //小数
    0.125 * 2 = 0.25 --- 0
    0.25  * 2 = 0.5  --- 0
    0.5   * 2 = 1    --- 1
	0.001 
1100.001

②将二进制形式的小数写成科学计数法

1100.001   => 1.100001 * 2^3 
                  |        |
                 尾数     指数

③按照FEEE754标准存放

1位符号位 | 8位指数位 | 23位尾数位
    0          |        100001
           3+127(偏移量)
0100 0001 0100 0010 0000 0000 0000 0000
  4    1    4    2    0    0    0    0

double:
1位符号位 | 11位指数位 | 52位尾数位
               |        
            x+1023(偏移量)

常量默认类型:

0.9:double型

0.9f:float型

123:int型

123L:long型

123LL:long long型

123LU:unsigned long型

字符型(character)

符号存储在计算机中需要通过编码,常用编码位ascii编码

常用编码值:

0~32:控制字符,如空格、换行等不可见字符

48~57:数字字符'0' - '9'

65~90:英文字母'A' - 'Z'

97~122:英文字母'a' - 'z'

字符型常量:

'A' :A这个常量

字符型变量:

char ch;

ch = 'a';在ch变量中实际存放的是'a'对应的ascii编码值(整型)

char        1byte

int            4byte

所以char又称为 tiny int,与int通用:

char ch = 'a';

unsigned char ch = -10; 

char ch = '1';

printf("%d\n",ch);       //输出1

printf("%c\n",'1');        //输出1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值