软考嵌入式系统工程师知识点整理(算法、语言)

算法、语言和程序

线性表查找方法:

  • 顺序查找。算法简单,但效率低
  • 折半查找。比较次数少,速度快,但要求是有序表
  • 分块查找。主要用于分块有序表查找

堆排序

  • 是一种选择排序
  • 每次从待排序的记录中选择出关键字最小或最大的记录,顺序放在已排序的记录序列最后,直到全部排完
  • 时间复杂性O(nLog2n),只需要一个附加存储节点
  • 适合对较大文件排序

排序算法

  • 插入排序分为直接插入排序和希尔排序
    • 直接插入排序,把数组A[n]中待排序的n个元素看成为一个有序表和无序表,开始时有序表中只包含一个元素A[n],无序表中只包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把它插入有序表中适当位置,使之成为新的有序表,这样经过n次插入后,有序表中就包含了排好序的全部n个元素。
    • 希尔排序是对直接插入排序的改进,是一个分组进行直接插入排序的过程。
  • 交换排序主要包括冒泡排序和快速排序
    • 冒泡排序是通过相邻元素之间的比较和交换,使关键字较小的元素逐渐从底部移向顶部
    • 快速排序,是首先从待排序区间取出一个元素作为比较的基准,进行一次划分,使区间前半部分只保留比基准元素关键字小或相等的元素,后半部分所有元素的关键字均大于等于基准元素的关键字,基准元素的当前位置即为排序后的最终位置,然后再对基准元素的前后两个子区间分别进行快速排序,这是一个递归过程,当一个区间为空或只包含一个元素时,就结束该区间的快速排序过程
  • 选择排序主要包括直接选择排序和堆排序
    • 直接选择排序每次从待排序的区间中选择出具有最小关键字的元素,把该元素与该区间的第一个元素交换位置
    • 堆排序是利用堆的特性进行排序的过程
  • 合并排序,是利用合并操作把一个无序表排列成一个有序表的过程

数据结构的特点:

  • 顺序存储方式可以用于存储线性结构和非线性结构
  • 顺序存储方式进行插入、删除运算会引起大量节点移动,运算效率不高
  • 单链表的每个节点包含一个指针,双链表的每个节点包含两个指针
  • 队列的存储方式既可以是顺序方式,又可以是链接方式
  • 负载因子是散列法的一个重要参数,它反映散列表装满程度
  • 散列法存储的基本思想是由关键字的值决定数据的存储地址
  • 在散列法中,不同的关键字值对应到同一存储地址时称作发生了冲突

数据类型的作用:

  • 为数据合理分配存储单元
  • 对参与表达式计算的数据对象进行检查
  • 便于规定数据对象的取值范围及能够进行的运算
    汇编语言运算符优先级
  • () <> [] . LEHGTH SIZE WIDTH MASK
  • PTR OFFSET SEG TYPE THIS
  • HIGH LOW
    • / MOD SHL SHR
    • -
  • EQ NE GT LT GE LE
  • NOT
  • AND
  • OR XOR
  • SHORT

程序语言翻译基础知识

  • 编译程序将源程序翻译成与之等价的目标程序,连接后形成可执行代码
  • 解释程序是逐句翻译执行源程序的语句,不产生源程序的目标代码,所以可以逐条排错
  • 汇编程序是将汇编语言源程序翻译成机器指令和其他信息组成的目标程序
  • 汇编语言有三类语句,即指令语句、伪指令语句、宏指令语句
  • 伪指令语句汇编后不产生机器语言指令

原码、补码、反码

  • 原码的最高位为符号位,其余为数值位
  • 补码的最高位为符号位,其余为数值位,还原时数值位取反,末位加1
  • 反码的最高位为符号位,其余为数值位

中间代码的特点:

  • 不同的高级程序语言可以产生同一种中间代码
  • 有利于进行与机器无关的优化处理
  • 有利于提高编译程序的可移植性

程序局部性

  • 空间局部性,是指某个地址一旦被使用时,在最近的一段时间里,它附近的地址通常也会被访问
  • 时间局部性,是指某个指令被访问时,在最近的一段时间里它可能再次被访问
  • 导致程序局部性的原因是通常程序中包含大量的循环,数据结构中又会经常出现数组等存储分配区域比较几种的结构

对于数组float array[5][4]是,若数组元素array[0][0]的地址为2400,每个数组元素长度为32b(4B),其采用行序或列序的存储模式时,array[3][2]的内存地址为?
- 行序:2400+(3*4+2)*4=2456
- 列序:2400+(2*4+3)*4=2444

汇编语言中CMP指令 CMP op1, op2。执行后CF置位,表示op1 < op2

  • CF:是否有进位或者借位
  • ZF:0标志位,就是结果是否为0
  • OF:溢出标志位,是否计算结果溢出
  • SF:符号位,0为正,1为负
  • AF:辅助进位标志位
  • PF:奇偶标志位

杂项:

  • 32位系统中,一个字符型指针占用4个字节空间
  • 大端=高尾端,小端=低尾端
  • 在对指针操作前,应先判断指针是否为空,还应保证指针所指向的内存空间不越界
  • 应用编程接口一般以库或者组件的形式而存在,实际的系统构建时,并不一定需要对应的接口API。
  • 程序运行过程中,常使用参数在函数间传递信息,引用调用传递的是实参的地址,值调用传递的是实参的值
  • static的作用:将变量修饰成静态变量,静态变量的存储地址在整个程序的运行执行期间均保留
  • const的作用:冻结一个变量,使其值在程序中不能被进一步改变
  • 最佳适应算法:假设系统中有n个空白区,每当用户申请一个空间时,将从这n个空白区中找到一个最接近用户需求的分区
  • Sizeof()操作符返回对象/类型所占空间大小
  • Strlen根据串结束标志字符’\0’计算长度
  • #define XXX(A,B) A ## B
  • XXX(test_func,1)(100) 编译后为func1(100)
  • char chr = 127 Chr += 1 语句之后,将使chr上溢到-128,而不是128
  • 描述可复用的构建的3C模型:概念、上下文、内容
  • 面向对象的方法:Booch, Coad, OMT

你可能感兴趣的:(软考,嵌入式系统)