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

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

第1章 计算机系统知识

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

码制定点整数定点小数
原码 − ( 2 n − 1 − 1 ) ∼ + ( 2 n − 1 − 1 ) -(2^{n-1}-1)\sim +(2^{n-1}-1) (2n11)+(2n11) − ( 1 − 2 n − 1 ) ∼ + ( 1 − 2 − ( n − 1 ) ) -(1-2^{n-1})\sim+(1-2^{-(n-1)}) (12n1)+(12(n1))
反码 − ( 2 n − 1 − 1 ) ∼ + ( 2 n − 1 − 1 ) -(2^{n-1}-1)\sim +(2^{n-1}-1) (2n11)+(2n11) − ( 1 − 2 n − 1 ) ∼ + ( 1 − 2 − ( n − 1 ) ) -(1-2^{n-1})\sim+(1-2^{-(n-1)}) (12n1)+(12(n1))
补码 − ( 2 n − 1 ) ∼ + ( 2 n − 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))
反码 − ( 2 n − 1 − 1 ) ∼ + ( 2 n − 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 ) S 2 E ( b 0 b 1 b 2 b 3 . . . b p − 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为指数(阶码),用移码表示
  • ( b 0 b 1 b 2 b 3 . . . b p − 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
可表示的实数范围 1 0 − 38 ∼ 1 0 38 10^{-38}\sim 10^{38} 10381038 1 0 − 308 ∼ 1 0 308 10^{-308}\sim 10^{308} 1030810308 1 0 − 4932 ∼ 1 0 4932 10^{-4932}\sim 10^{4932} 104932104932

1.3 海明码

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

1.4 Cache性能分析

H c H_c Hc为cache的命中率, t c t_c tc为Cache的存取时间, t m t_m tm为主存的访问时间,则Cache存储器的等效加权平均访问时间 t a t_a ta为:
t a = H c t c + ( 1 − H c ) t m = t c + ( 1 − H c ) ( t m − t c ) 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 = M T B F M T B F + M T R F A=\frac{MTBF}{MTBF+MTRF} A=MTBF+MTRFMTBF

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

1.7 计算机可靠性模型

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

第3章 数据结构

3.1 二叉树的性质

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

3.2 哈希解决冲突方法

开放定址法:
H i = ( H ( k e y ) + d i ) % m i = 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: 哈希表表长
  • d i d_i di: 增量序列

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

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

第4章 操作系统知识

4.1 作业调度算法

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

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

第5章 软件工程基础知识

5.1 COCOMO估算模型

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

1)基本COCOMO模型

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

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

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

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

5.2 Putnam估算模型

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

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

5.3 McCabe度量法

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

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

第8章 算法设计与分析

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

T ( n ) = ∑ i = 1 m p i × t i T(n)=\sum_{i=1}^m p_i\times t_i T(n)=i=1mpi×ti

  • p i p_i pi:第i类输入发生的概率
  • t i t_i ti:第i类输入的执行时间,
  • 输入分为m类
  • 3
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值