软件设计师教程中常用公式汇总

本文涵盖了计算机系统的基础知识,包括机器字长、浮点数的IEEE754标准、海明码、Cache性能分析、磁盘容量计算以及计算机的使用效率和可靠性模型。同时,讨论了数据结构中的二叉树性质、哈希解决冲突方法和各种排序算法的性能比较。此外,介绍了软件工程中的COCOMO和Putnam成本估算模型以及McCabe度量法。

前言,本文章所有内容均摘录自《软件设计师教程(第5版)》

第1章 计算机系统知识

1.1机器字长为n时各种码制表示的带符号数的范围

码制定点整数定点小数
原码−(2n−1−1)∼+(2n−1−1)-(2^{n-1}-1)\sim +(2^{n-1}-1)(2n11)+(2n11)−(1−2n−1)∼+(1−2−(n−1))-(1-2^{n-1})\sim+(1-2^{-(n-1)})(12n1)+(12(n1))
反码−(2n−1−1)∼+(2n−1−1)-(2^{n-1}-1)\sim +(2^{n-1}-1)(2n11)+(2n11)−(1−2n−1)∼+(1−2−(n−1))-(1-2^{n-1})\sim+(1-2^{-(n-1)})(12n1)+(12(n1))
补码−(2n−1)∼+(2n−1−1)-(2^{n-1})\sim +(2^{n-1}-1)(2n1)+(2n11)−1∼+(1−2−(n−1))-1\sim+(1-2^{-(n-1)})1+(12(n1))
反码−(2n−1−1)∼+(2n−1−1)-(2^{n-1}-1)\sim +(2^{n-1}-1)(2n11)+(2n11)−1∼+(1−2−(n−1))-1\sim+(1-2^{-(n-1)})1+(12(n1))

1.2 工业标准IEEE 754

浮点数的表示形式:
(−1)S2E(b0b1b2b3...bp−1)(-1)^S2^E(b_0b_1b_2b_3...b_{p-1})(1)S2E(b0b1b2b3...bp1)

  • (−1)S(-1)^S(1)S为该浮点数的数符,当S为0时表示正数,S为1时表示负数
  • E为指数(阶码),用移码表示
  • (b0b1b2b3...bp−1)(b_0b_1b_2b_3...b_{p-1})(b0b1b2b3...bp1)为尾数,其长度为P位,用原码表示

3种形式的IEEE 754浮点数格式

参数单精度浮点数双精度浮点数扩充精度浮点数
浮点数字长326480
尾数长度P235264
符号位S111
指数长度E81115
最大指数+127+1023+16383
最小指数-126-1022-16382
指数偏移量+127+1023+16383
可表示的实数范围10−38∼103810^{-38}\sim 10^{38}1038103810−308∼1030810^{-308}\sim 10^{308}103081030810−4932∼10493210^{-4932}\sim 10^{4932}104932104932

1.3 海明码

设数据位是n位,校验位是k位,则n和k必须满足以下关系:
2k−1>=n+k2^k-1>=n+k2k1>=n+k

1.4 Cache性能分析

HcH_cHc为cache的命中率,tct_ctc为Cache的存取时间,tmt_mtm为主存的访问时间,则Cache存储器的等效加权平均访问时间tat_ata为:
ta=Hctc+(1−Hc)tm=tc+(1−Hc)(tm−tc)t_a=H_ct_c + (1-H_c)t_m=t_c+(1-H_c)(t_m-t_c)ta=Hctc+(1Hc)tm=tc+(1Hc)(tmtc)

1.5 磁盘容量计算公式

  • 非格式化容量=面数*(磁道数/面)*内圆周长*最大位密度,磁盘所能存储的总位数
  • 格式化容量=面数*(磁道数/面)*(扇区数/道)*(字节数/扇区),各扇区中数据区容量的总和

1.6 计算机的使用效率

以系统在执行任务的任意时刻能正常工作的概率A来表示,即
A=MTBFMTBF+MTRFA=\frac{MTBF}{MTBF+MTRF}A=MTBF+MTRFMTBF

  • MTBF:平均无故障时间,两次故障之间系统能正常工作的时间的平均值
  • MTRF:计算机的维修效率,指从故障发生到机器修复平均所需要的时间

1.7 计算机可靠性模型

  • 串联系统。设系统中各个子系统的可靠性分别用R1R_1R1,R2R_2R2RNR_NRN来表示,则系统的可靠性R可由下式求得:
    R=R1R2...RNR=R_1R_2...R_NR=R1R2...RN
  • 并联系统。设系统中各个子系统的可靠性分别用R1R_1R1,R2R_2R2RNR_NRN来表示,则系统的可靠性R可由下式求得:
    R=1−(1−R1)(1−R2)...(1−RN)R=1-(1-R_1)(1-R_2)...(1-R_N)R=1(1R1)(1R2)...(1RN)

第3章 数据结构

3.1 二叉树的性质

  • 二叉树第i层(i>=1)上最多有2i−12^{i-1}2i1个结点
  • 高度为k的二叉树最多有2k−12^k-12k1个结点(k>=1)
  • 对于任何一棵二叉树,若其终端结点数为n0n_0n0,度为2的结点数为n2n_2n2,则n0=n2+1n_0=n_2+1n0=n2+1
  • 具有n个结点的完全二叉树的深度为[log2n+1log_2n+1log2n+1]

3.2 哈希解决冲突方法

开放定址法:
Hi=(H(key)+di)%mi=1,2,...,k(k≤m−1)H_i=(H(key)+ d_i) \% m \quad i=1,2,...,k(k \leq m-1)Hi=(H(key)+di)%mi=1,2,...,k(km1)

  • H(key): 哈希函数
  • m: 哈希表表长
  • did_idi: 增量序列

3.3 各种排序方法的性能比较

排序方法时间复杂度辅助空间稳定性
直接插入O(n2)O(n^2)O(n2)O(1)稳定
简单选择O(n2)O(n^2)O(n2)O(1)不稳定
冒泡排序O(n2)O(n^2)O(n2)O(1)稳定
希尔排序O(n1.3)O(n^{1.3})O(n1.3)O(1)不稳定
快速排序O(nlog⁡n)O(n \log n)O(nlogn)O(log⁡n)O( \log n)O(logn)不稳定
堆排序O(nlog⁡n)O(n \log n)O(nlogn)O(1)不稳定
归并排序O(nlog⁡n)O(n \log n)O(nlogn)O(n)稳定
基数排序O(d(n+rd))O(d(n+rd))O(d(n+rd))O(rd)稳定

第4章 操作系统知识

4.1 作业调度算法

响应比:
Rp=作业响应时间作业执行时间R_p=\frac{作业响应时间}{作业执行时间}Rp=

作业响应时间为作业进入系统后的等候时间与作业的执行时间之和,即
Rp=1+作业响应时间作业执行时间R_p=1+\frac{作业响应时间}{作业执行时间}Rp=1+

第5章 软件工程基础知识

5.1 COCOMO估算模型

一种精确的、易于使用的成本估算模型,按详细程度分类:

1)基本COCOMO模型

一个静态单变更模型,用于对整个软件系统进行估算。其公式如下:
E=a(L)b,D=cEdE=a(L)^b,D=cE^dE=a(L)b,D=cEd
其中:

  • E表示工作量,单位是人月
  • L是项目的源代码行估计值,不包括程序中的注释及文档,其单位是千行代码
  • a,b,c,d是常数
2)中级COCOMO模型

静态多变更模型,将软件系统模型分为系统和部件两个层次。公式如下:
E=a(L)bEAFE=a(L)^bEAFE=a(L)bEAF

  • EAF:工作量调节因子
  • L:软件产品的目标代码行数,单位是千行代码
  • a,b是常数

5.2 Putnam估算模型

一种动态多变量模型,假设在软件开发的整个生存周期中工作量有特定的分布。公式如下:
L=CkE1/3td4/3L=C_kE^{1/3}t_d^{4/3}L=CkE1/3td4/3

  • L表示源程序代码行数(LOC)
  • tdt_dtd表示开发持续时间(年)
  • E是包括软件开发和维护在整个生存期所花费的工作量(人年)
  • CkC_kCk表示技术状态常数,其值依赖于开发环境

5.3 McCabe度量法

在一个强连通的有向图G中,环的个数V(G)由下面公式给出:
V(G)=m−n+2pV(G)=m-n+2pV(G)=mn+2p

  • V(G):有向图G中的环路数
  • m: 图G中弧的个数
  • n: 图G中的结点数
  • p: 图G中的强连通分量个数

第8章 算法设计与分析

8.1 一般算法在平均情况下的复杂度分析

T(n)=∑i=1mpi×tiT(n)=\sum_{i=1}^m p_i\times t_iT(n)=i=1mpi×ti

  • pip_ipi:第i类输入发生的概率
  • tit_iti:第i类输入的执行时间,
  • 输入分为m类
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值