学习嵌入式的第二天
学习嵌入式(embadded)的第二天#
常量
1.常量的定义
在定义是就进行了赋值且值不能进行更改的
2.常量的定义
2.1 使用#define
#define 也叫宏定义:在预处理的时候直接进行文本调换
注意事项
- 不要以分号结尾,分号会成为常量的一部分
-
define 必须写在main()函数外面
2.1 关键字const
- 在编译阶段会进行类型检查
- 在程序执行时在内存中创建
进制
1. 常见进制
- 二进制
- 十进制
- 十六进制
2.不同进制的表示
- 默认二进制
- 0b开头表示二进制
- 0x开头表示十六进制
3. 进制的转换
二进制转十进制
1(2^6) 0(2^5) 1(2^4) 0(2^3) 1(2^2) 0(2^1) 1(2^0)=64+0+16+0+4+1
2^0 =1
2^1 =2
2^2 =4
2^3 =8
2^4 =16
2^5 =32
2^6 =64
2^7 =128
2^8 =256
2^9 =521
2^10 =1024
十进制转二进制
凑数发
96 = 64+32 1100000
十六进制和二进制的转换
4个二进制位等于一个16进制位
1001 1001 1100 9 9 c = 99C
0 1 2 3 4 5 6 7 8 9 A B C D E F (十六进制0~15)
原码,反码,补码
正数和0
原码,反码,补码 都一样
负数
原码: 符号位为 1 其他对应即可
反码: 在反码基础上,符号位不变,其他位取反
补码: 在反码基础上,加1
如图所示 用4位二进制存储数字的化,如果都是正数的话 可以表示0~15
如果有负数的话 0~7 和 -8~-1 只能正数 负数各一半0算的正数
到8和9及到15刚好都是4位二进制数的第一位为1 所以反推出来补码,反码,原码
比如: 4个二进制数 可以表达16位 它的第一位可以表达8,当它为 1 1 1 1 时可以理解为8-7 为-1
数据类型
整数类型
类型 | 存储长度 |
---|---|
short int 短整型 | 2字节 |
int 整型 | 2或4字节 因操作系统和编译环境决定 |
long int 长整型 | 4或8字节 因操作系统和编译环境决定 |
long long int 超长整型 | 8字节 |
- 每种整型又分为有符号(short int )和无符号(umsigned)
- 默认表示有符号,如 int 表示 signed int
字面量后缀
int 没有 long L long long LL unsigned int U unsigned long UL
unsigned long long ULL
- 字面量后缀不区分那大小写
- U和L 可以自由组合
例:
unsigned long age = 120ul;
格式占位符
数据类型 | 格式占位符 | 数据类型 | 格式占位符 |
---|---|---|---|
int | %d | unsigned int | %u |
short | %hd | unsigned short | %hu |
long | %ld | unsigned long | %lu |
long long | %lld | unsigned long long | %llu |
等宽整数类型
int8_t uint8_t
int16_t uint16_t
int32_t uint32_t
int64_t uint64_t
位于标准库 头文件 stdint.h 中
本质上就是因为c语言的移植性不好,在32位操作系统和64位操作系统下 整数类型的字节有变化
上面的这个就是根据 位数 去找本操作系统中适合的 整数类型 比如int32_t就是32个位
4个字节,一般都是 int类型
浮点类型
浮点类型的划分
数据类型名 | 存储长度 | 有效小数位 |
---|---|---|
float | 4 | 6~9 |
double | 8 | 15~18 |
long double | 10或16 | 更多 |
格式占位符
数据类型 | 十进制形式占位符 | 科学计数法占位符 |
---|---|---|
float | %f | %e |
double | %lf | %le |
long double | %Lf | %Le |
浮点数存储原理
3.12e+10^4 3.12乘10的4次方
3.14 称为 位数 10 称为 基数 4 称为 指数
在计算机中 浮点数会分为 符号位,指数位,尾数位进行存储
假如4个字节就是32位 第一位 是 符号位 后八位是指数位 后面都是尾数位
所以存储量较大,字节越多精度就越高
字符类型
本质是一个字节的整数,分为 char 和 unsigned char
ascII 码
A 65
a 97
布尔类型
1. 第一种方式
C89标准,使用宏定义
2. 第二种方式
C99标准,添加 _Bool 类型
3. 第三种方式
C99标准,标准库头文件 <stdbool.h>
bool true false
1.宏定义
标准库 头文件 <stdbool.h>
c99 添加 _Bool类型
[学英语](
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)