diff --git a/docs/.vitepress/theme/styles/custom.css b/docs/.vitepress/theme/styles/custom.css index 037cc04b6..55731e22f 100644 --- a/docs/.vitepress/theme/styles/custom.css +++ b/docs/.vitepress/theme/styles/custom.css @@ -17,11 +17,19 @@ pre, code, kbd, samp { } .vp-doc h2 { - margin: 15px 0 16px; + margin: 15px 0 0; padding-top: 10px; border-top: none; } +.vp-doc h3,h4,h5 { + margin: 10px 0 0; +} + +.vp-doc h4 { + font-size: 18px; +} + .VPDoc .content-container img { border-radius: 5px; } diff --git a/docs/categories/fragments/2023/05/06/软件设计师知识点速记.md b/docs/categories/fragments/2023/05/06/软件设计师知识点速记.md index 203ed97de..6a4de230f 100644 --- a/docs/categories/fragments/2023/05/06/软件设计师知识点速记.md +++ b/docs/categories/fragments/2023/05/06/软件设计师知识点速记.md @@ -11,6 +11,120 @@ tags: # 软件设计师知识点速记 +## 计算机组成与体系结构 + +### 进制转换 + +#### R 进制 => 十进制 + +R 进制转十进制使用 **按权展开法** ,其具体操作方式为:将 R 进制数的每一位数值用 $R^{k}$ 形式表示,即幂的底数是 R,指数为 k,k 与该位和小数点之间的距离有关。当该位位于小数点左边,k 值是该位和小数点之间数码的个数,而当该位位于小数点右边,k 值是负值,其绝对值是该位和小数点之间数码的个数加 1。 + +**示例:二进制数 10100.01 转换为十进制。** + +**解析:** 示例中的二进制数存在小数点位,可先计算小数点位一侧的数值。我们从左侧开始,,从小数点位左侧第 1 位数值开始计数:0、1、2、3、4,一共 5 位数值,则第 5 位数值 1 可以展开为 $1*2^{4}$ ,第 4 位数值 0 可以展开为 $0*2^{3}$(由于 0 和任何数相乘结果都为 0,以后日常转换时,可以直接跳过数值为 0 的计算,但注意只是跳过计算不是跳过计数),依次类推...。 + +左侧累加完后,再继续计算小数点位右侧,从小数点位右侧第 1 位数值开始计数,-1、-2,一共 2 位数值。不过按照我们日常的顺序习惯,可以直接从第 1 位数值展开计算,0 展开计算为 $0*2^{-1}$,第 2 位数值 1 展开计算为 $1*2^{-2}$,将结果最终累加求和即可得到对应二进制的十进制表示。 + +$$ +10100.01=1*2^{4}+0*2^{3}+1*2^{2}+0*2^{1}+0*2^{0}+0*2^{-1}+1*2^{-2} +$$ + +::: tip 笔者说 +**权:** 即 R。 +**按权展开:** 即将 R 进制的每一权位数值(个位、十位、百位...)分别展开计算,最后求和。 +::: + +::: details 例题:七进制数 604.01 转换为十进制。 +**解析:** 根据按权展开法,可得到下列表达式: +$$ +604.01=6*7^{2}+0*7^{1}+4*7^{0}+0*7^{-1}+0*7^{-2} +$$ +::: + +#### R 进制 <= 十进制 + +十进制转 R 进制使用 **短除法** ,简单来说就是将十进制数除 R 取余,余数为权位上的数,得到的商值继续除R,依此步骤继续向下运算直到商为 0 为止。然后从最后一个余数读到第一个即为我们转换的 R 进制。 + +**示例:十进制数 150 转换为二进制。** + +**解析:** + +![202305062208011](../../../../../public/img/2023/05/06/202305062208011.png) + +#### 二进制 => 八进制 + +3 位二进制数按权展开相加得到 1 位八进制数。 + +::: tip 笔者说 +3 位二进制转成八进制是从右到左开始转换,不足位时补 0。 +::: + +**示例:二进制数 100101110 转换为八进制。** + +**解析:** + +![202305062210123](../../../../../public/img/2023/05/06/202305062210123.png) + +#### 二进制 <= 八进制 + +二进制数转换为八进制,是用 3 位二进制数表示 1 位八进制数。反之八进制数转换为二进制数,那就需要用 1 位八进制数来表示 3 位二进制数。 + +八进制数通过对每位数值进行短除法,得到二进制数,每个八进制数为 3 个二进制数,不足时在最左边补 0。 + +**示例:八进制数 226 转换为二进制。** + +**解析:** + +![202305062210222](../../../../../public/img/2023/05/06/202305062210222.png) + +#### 二进制 => 十六进制 + +与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。 + +::: tip 笔者说 +4 位二进制转成十六进制是从右到左开始转换,不足位时补0。 +::: + +**示例:二进制数 100101110 转换为十六进制。** + +**解析:** + +![202305062210321](../../../../../public/img/2023/05/06/202305062210321.png) + +#### 二进制 <= 十六进制 + +二进制数转换为十六进制,是用 4 位二进制数表示 1 位十六进制数。反之十六进制数转换为二进制数,那就需要用 1 位十六进制数来表示 4 位二进制数。 + +十六进制数通过对每位数值进行短除法,得到二进制数,每个十六进制数为 4 个二进制数,不足时在最左边补 0。 + +**示例:十六进制数 12C 转换为二进制。** + +**解析:** + +![202305062219521](../../../../../public/img/2023/05/06/202305062219521.png) + +### 码制的表示 + +#### 码制运算 + +| | 数值1 | 数值-1 | +| ---- | --------- | --------- | +| 原码 | 0000 0001 | 1000 0001 | +| 反码 | 0000 0001 | 1111 1110 | +| 补码 | 0000 0001 | 1111 1111 | +| 移码 | 1000 0001 | 0111 1111 | + +二进制数值,最高位(最左侧的数值)是符号位,0 表示正数,1 表示负数。 + +- 原码:除符号位,其余低位表示数值的绝对值。 +- 反码:正数的反码与原码相同,负数的反码是其绝对值按位取反。 +- 补码:正数的补码与原码、反码相同,负数的补码是其反码末尾加 1。 +- 移码:补码的符号位按位取反。 + +::: tip 笔者说 +**取反:** 原来为 0 则变为 1,原来为 1 则变为 0。(真假变换) +::: + ## 流水线技术 - 流水线建立时间:第 1 条指令执行时间 @@ -27,8 +141,7 @@ tags: ::: details 2009上半年:某指令流水线由 5 段组成,第 1、3、5 段所需时间为 $\Delta t$,第 2、4 段所需时间分别为 $3\Delta t$、$2\Delta t$,如下图所示,那么连续输入 n 条指令时的吞吐率(单位时间内执行的指令个数)TP 为______。 -连续输入 n 条指令时,第 1 条指令需要的时间为 $(1+3+1+2+1)\Delta t$,之后,每隔 $3\Delta t$ 便完成 1 条指令,即流水线一旦建立好,其吞吐率为最长子过程所需时间的倒数。综合 n 条指令的时间为 $(1+3+1+2+1)\Delta t+(n-1)\times 3\Delta t$,因此吞吐率为: - +**答:** 连续输入 n 条指令时,第 1 条指令需要的时间为 $(1+3+1+2+1)\Delta t$,之后,每隔 $3\Delta t$ 便完成 1 条指令,即流水线一旦建立好,其吞吐率为最长子过程所需时间的倒数。综合 n 条指令的时间为 $(1+3+1+2+1)\Delta t+(n-1)\times 3\Delta t$,因此吞吐率为: $$ \frac{n}{(3+3+2)\Delta t+3(n-1)\Delta t} $$ @@ -114,7 +227,7 @@ UML 2.0 分为结构图和行为图。 ### 创建型设计模式应用场景 -| 设计模式名称 | 简要说明 | 速记关键字 | +| 设计模式 | 简要说明 | 速记 | | ---------------------------------- | ------------------------------------------------------------ | -------------- | | Factory Method
工厂方法模式 | 定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟。 | 动态生产对象 | | Abstract Factory
抽象工厂模式 | 提供一个接口,可以创建一系列相关接口或相互依赖的对象,而无需指定它们具体的类。 | 生产成系列对象 | @@ -124,7 +237,7 @@ UML 2.0 分为结构图和行为图。 ### 结构型设计模式应用场景 -| 设计模式名称 | 简要说明 | 速记关键字 | +| 设计模式 | 简要说明 | 速记 | | ----------------------- | ------------------------------------------------------------ | ------------ | | Adapter
适配器模式 | 将一个类的接口转换成用户希望得到的另一种接口。它使原本不相容的接口得以协同工作。 | 转换接口 | | Bridge
桥接模式 | 将类的抽象部分和它的实现部分分离开来,使它们可以独立地变化。 | 继承树拆分 | @@ -136,7 +249,7 @@ UML 2.0 分为结构图和行为图。 ### 行为型设计模式应用场景 -| 设计模式名称 | 简要说明 | 速记关键字 | +| 设计模式 | 简要说明 | 速记 | | ------------------------------------ | ------------------------------------------------------------ | ---------------- | | Chain of Responsibility 职责链模式 | 通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接收对象链接起来,在链中传递请求,直到有一个对象处理这个请求。 | 传递职责 | | Command
命令模式 | 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。 | 日志记录,可撤销 | diff --git a/docs/public/img/2023/05/06/202305062208011.png b/docs/public/img/2023/05/06/202305062208011.png new file mode 100644 index 000000000..dd5e3ea7b Binary files /dev/null and b/docs/public/img/2023/05/06/202305062208011.png differ diff --git a/docs/public/img/2023/05/06/202305062210123.png b/docs/public/img/2023/05/06/202305062210123.png new file mode 100644 index 000000000..40394168d Binary files /dev/null and b/docs/public/img/2023/05/06/202305062210123.png differ diff --git a/docs/public/img/2023/05/06/202305062210222.png b/docs/public/img/2023/05/06/202305062210222.png new file mode 100644 index 000000000..0d99bbfab Binary files /dev/null and b/docs/public/img/2023/05/06/202305062210222.png differ diff --git a/docs/public/img/2023/05/06/202305062210321.png b/docs/public/img/2023/05/06/202305062210321.png new file mode 100644 index 000000000..5871d8ea6 Binary files /dev/null and b/docs/public/img/2023/05/06/202305062210321.png differ diff --git a/docs/public/img/2023/05/06/202305062219521.png b/docs/public/img/2023/05/06/202305062219521.png new file mode 100644 index 000000000..5831ea860 Binary files /dev/null and b/docs/public/img/2023/05/06/202305062219521.png differ