嵌入式c学习三

**c语言关键字:**c标准中常用关键字有32个,这些都是小写,是某个英文单字缩写如:int - integer 整数,char-charact 字符

**计算机存储结构:**计算机只采用二进制存储数据,这些数据是存储在存储器,用户通过输入设备(键盘)输入的数据是先存在内存中,控制器将数据传递给运算器,运算器处理完传递给控制器,控制器将数据传递给输出设备(显示器)

**内存概念:**计算器存储器一般分为两种:RAM(随机存储器)、ROM(只读存储器)

**只读存储器(Read Only Memory):**属于非易失性存储设备,掉电不会丢失数据

**随机存储器(Random Access Memory):**属于易失性存储设备,掉电数据丢失,速度很快,一般直接和CPU传输,计算机的内存条就是RAM,其空间越大,CPU处理数据越多

内存单位: 内存中一个MOS管栅极电容可以存储一个二进制数据0/1,标准规定一个二进制数用bit(比特-binary digit)来表示,bit是计算机数据的最小单位,计算机处理数据的最小单位是byte(字节),1字节=8比特,32bit(位)系统(或64位系统)表示计算机的地址总线位数,即计算机的寻址范围是32位,32位二进制数可以表示 2^32=4294967296 个不同的地址,每个地址对应一个存储单元(1字节),通常以字节位单位来表示内存空间,即寻址总范围2^32字节,2^10=1024字节(1KB),1MB=1024字节*1024字节(2^10*2^10=2^20),1GB=1024字节*1024字节*1024字节(2^30),2^32=2^30*2^2=4*2^30=4*1GB,即32位系统寻址范围位4GB字节,存储单元地址0x0000 0000~0xFFFF FFFF,存储单元的大小是1字节,存储单元的地址是4字节(一共32位一个字节是8位)

c语言常量与变量:内存是一块连续的存储空间,每个存储单元都有对应编号(地址)且是固定的,且用户一般不会直接通过地址访问,效率太低,c语言规定用户有权限从内存中申请一快内存单元,且可以对其进行命名(对内存单元的地址重命名,需要提前说明申请内存单元的大小,一般以字节位单位),然后linux内核会将用户的命名与内存地址建议映射关系------可以直接通过命名来访问存储单元

**常量:**在程序运行期间不会改变的量

**变量:**程序运行期间可能会发生改变的量,用户根据需求向kernel(内核),申请一块存储单元并命名,用户可以随时修改内存单元的数据,内存单元大小可以通过c语言中数据类型指定

**命名规则:**变量与常量也叫做标识符,要求只能由字母、下划线、美元符号($)组成(区分大小写),且只能以字母或下划线( _ )开头,为避免二义性,c语言规定不能以系统保留字,和程序中已经存在的函数名称命名如main、int

**c语言的数据类型:**c语言提供一些关键字专门用来表示数据类型(表示要申请内存单元的大小)

字符型: c语言提供了一个关键字char(character),表示字符,数据宽度为1字节,用 ' '单撇号表示字符,c语言规定,存储字符格式--->数据宽度 变量名称;如:char(数据宽度) ch(变量名称) = 'a'; c语言标准中字符包括:普通字符、转义字符,c语言不支持二进制输入支持8、10、16进制输入

**整数型:**int (integer)在32位系统下,其数据宽度为4字节,可以用不同进制存储数据,需要加前导符8进制 0表示、16进制0x/0X表示

**小数的进制转换(10进制转2进制):**小数部分不断乘2,取整数部分,直到小数部分为0,如0.625->0.625*2=1.25(取出整数部分1,小数部分0.25继续*2)->0.25*2=0.5(取0,剩0.5)->0.5*2=1.0(取1,剩0.0转换结束)->0.101

**短整型:**short(short int int可以省略)32位系统中,宽度位2字节

**长整型:**long 32位系统在为4字节,64为系统中为8字节

**长长整型:**long long 32为与64为系统中均占8字节

**数据的正负:**c语言标准中signed(有符号)和unsigned(无符号)修饰整数,signed为隐式修饰符,即用户未指定时,整型变量默认为有符号数

**负数的存储:**二进制中最高位表示符号位,1表示负数,0表示正数

原码,反码和补码:正数:三码相等 6->0x 0000 0110,负数:反码=原码符号位不变,其余为按位取反,补码=反码+1,计算机是以二进制的补码存储数据

如:char a = -5;

char b = 16; a+b=11

16: 0001 0000 三码合一

-5: 原码 :1000 0101

反码 :1111 1010

补码::1111 1011

16 补码::0001 0000

16+(-5) 补码:0000 1011 (最高位是0表示正数11)

浮点型: float单精度4个字节,double双精度个字节,c语言有两种方式表示浮点数3.14或314*10-^2->314E-2(c语言规定用e或者E表示以10为低的指数,e/E后面必须是整数,前面必须有数字)

字符串: 用双引号表示( " " )且规定字符串结束标志是'\0'(不用手动添加,系统会自动在字符串末尾添加)

**布尔型:**c99标准中可以使用布尔型表示真假

相关推荐
小猿_003 分钟前
C语言单链表头插法
c语言·开发语言
仟濹1 小时前
【算法 C/C++】二维差分
c语言·c++·算法
蓑衣客VS索尼克1 小时前
无感方波开环强拖总结
经验分享·单片机·学习
肥肠可耐的西西公主2 小时前
前端(AJAX)学习笔记(CLASS 4):进阶
前端·笔记·学习
云上艺旅2 小时前
K8S学习之基础十五:k8s中Deployment扩容缩容
学习·docker·云原生·kubernetes·k8s
亭墨3 小时前
linux0.11内核源码修仙传第五章——内存初始化(主存与缓存)
linux·c语言·驱动开发·学习·缓存·系统架构
凡人的AI工具箱3 小时前
PyTorch深度学习框架60天进阶学习计划第14天:循环神经网络进阶
人工智能·pytorch·python·深度学习·学习·ai编程
愚润求学3 小时前
从零开始学C语言文件操作:理论与代码详解
c语言·开发语言·文件操作·语法
我是大咖3 小时前
c语言笔记 一维数组与二维数组
c语言·笔记·算法
誓约酱3 小时前
(每日一题) 力扣 283 移动零
linux·c语言·数据结构·c++·算法·leetcode