嵌入式小白第一周学习笔记

1.gcc 编译

工作的4个步骤

​ 预处理—>> 编译—>> 汇编—>> 链接 就可以得到可执行文件

  • 预处理:gcc -E .c源文件 -o 目标.i

  • 编译:gcc -S 目标.i -o 目标.s

  • 汇编:gcc -c 目标.s -o 目标.o

  • 链接:gcc 目标.o -o 3

  • 一步生成(编译):gcc 源文件 生成a.out

  • 指定生成目标文件(编译):gcc 源文件 -o 目标文件

  • 执行可执行文件:./可执行文件

2.计算机基本结构

输入设备(键盘、鼠标)、CPU、存储器、输出设备(显示屏)

在这里插入图片描述

  • 外存:位于电脑上,例如磁盘、U盘。存CPU上暂时不使用的数据或程序。
  • 内存:存放CPU需要使用的程序和数据。容量比较小。掉电时数据消失。
  • 寄存器:存在于CPU中,是一个存取速度很快的寄存器,容量很小—>正在使用的程序和数据。
  • 程序:就是计算机系统可以识别的一组二进制的有序指令!

3.C的发展史

程序语言的发展

  • 机器语言:对机器很友好,但是对人是不友好。 010101
  • 汇编语言:机器语言符号化
  • 高级语言:更接近人类自然语言,

4.关键字---->>数据类型

关键字都是小写,分类:

表示数据类型的关键字:char、double、enum、float、int、long、short、struct、union、void…

表示控制语句的关键字:break、continue、case、default、do、for、goto、if、switch、while

表示数据存储类型的关键字:auto、extern、register、static

其他关键字:const修饰符—只读、return结束函数、sizeof计算内存大小、volatile防止编译器优化

​ typedef:对已经存在的数据类型进行重命名

  • signed:有符号------>>数据可以有正数,也可以有负数

  • unsigned:无符号------>>只有正数

注意:内存的基本单位是字节,1字节占8个位

  • 有符号数:数据可以是正数,也可以是负数。

原码、反码、补码

  • 有符号数的最高字节的最高位表示符号位,0表示正数,1表示负数

  • 负数:在内存中以补码的形式存储的

  • 补码=反码+1

  • 反码=原码取反,取反的时候符号位不变

Char类型 -1 在内存中的存储:

原码:1000 0001

反码:1111 1110

补码:1111 1111

1111 1111 就是char类型的-1在内存中存储格式。

  • 无符号数:想怎么存就怎么存,没有补码、反码这一说。

各种数据类型的数据的取值范围

  • signed char:1000 0000 ~ 0111 1111 结果是-128 ~ 127------>>-2^7 ~ 2^7-1

  • unsigned char:0 ~ 1111 1111 结果是 0 ~ 255------>>0 ~ 2^8-1

  • signed int:-2^31 ~ 2^31-1

  • unsigned int:0 ~ 2^32-1

  • signed short:-2^15 ~ 2^15-1

  • unsigned short:0 ~ 2^16-1

  • signed long:-2^63 ~ 2^63-1

  • unsigned long:0 ~ 2^64-1

面试题目

在这里插入图片描述

问:a输出的值是多少?

255超出signed char 的最大范围

255------>>1111 1111(补码)------>>1111 1110(反码)------>>1000 0001(原码)------>>-1

浮点型数据,整数部分和小数部分,它在内存中的存储就不能和整数的存储方式一样了

  • 不能用=,只能近似≈
  • float:单精度 4个字节
  • double:双精度 8个字节

例子:

定义一个float类型的变量a,判断他的值是否和0相等?

If(a>=-0.000001 && a<=0.000001)

5.C的数据

程序最重要的是处理数据

数据分类:数值类型数据、非数值类型数据

  • 数值类型数据:可以参与算术运算

  • 非数值类型数据:图片、语言、语音等

数值数据表示形式

  • 二进制:0~1 用b开头 给计算机使用 b011 满2进1
  • 八进制:0~7 用0开头的 写代码用的 076 023 满8进1
  • 十进制:0~9 给人看的 10 11 12 满10进1
  • 十六进制:0~9 AF/af 用0x或者0X开头的 0xac 满16进1

二进制和十进制之间的转换比较困难,八进制、十六进制和二进制之间转换较容易

  • 2进制、8进制、16进制转换成10进制

在这里插入图片描述

  • 10进制转换为2进制、8进制、16进制

短除法

在这里插入图片描述

在这里插入图片描述

  • 8进制、16进制和2进制之间转换

字符数据转成对应ASCII码值来表示: 单引号括起来的就是字符

数字字符‘0’~‘9’ ASCII码值:48~57

空字符‘\0’ ASCII码值: 0

大写字母字符‘A’~’Z’ASCII码值: 从65开始 依次+1即可

小写字母字符‘a’~’z’ ASCII码值: 从97开始 依次+1即可。

6.常量

  • 常量:值不可以修改
  • 变量:值可以修改

常量分类

  • 整型常量:各种进制数都可以表示

  • 字符常量:‘a’

  • 长整型常量:78L

  • 无符号整型常量:78u

  • 浮点型常量:1.2 2.5

  • 字符串常量:“hello dog”。在内存中占几个字节?10

在这里插入图片描述

注意:字符串常量都是‘\0’字符结尾的,因为’\0’是字符串的结束符号。

‘\0’的ASCII码值是多少: 0

宏定义的格式:#define 名字 数值

宏还可以用来表示函数,叫宏函数

在这里插入图片描述

宏函数在使用的时候只是做简单的文本替换

注意:字符串常量都是‘\0’字符结尾的,因为’\0’是字符串的结束符号。

‘\0’的ASCII码值是多少: 0

宏定义的格式:#define 名字 数值

宏还可以用来表示函数,叫宏函数

宏函数在使用的时候只是做简单的文本替换

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值