打算参加今年五月份的软考中级,最近业余时间有一部分放在知识点复习上。因为白天有工作,而且也有一部分精力放在了其他内容中,感觉需要提升一下复习的效率,借鉴了一些复习资料和经验,决定以知识图谱 + 记录的方式进行复习,有备考意向的小伙伴也欢迎一起交流。
一、知识、分值比例图
我备考的是软考中级「软件设计师」,知识点以及分值占比如上图所示,面向对象、软件工程基础和数据结构与算法占比最大,其次是程序设计语言、硬件基础、数据库和操作系统,其余部分占比相对较小,总的来说对科班出身的同学不难,但对于工作后的前端工程师或者非科班的可能考察的比较全面。我是当做一次个人的基础强化来对待,在后续的一到两个月内会持续的完善这个知识图谱,覆盖到所有的考察知识点。
二、今日知识点「原码、反码、补码、移码」
关于原码、反码、补码,在 江不知的 深入浅出:举个🌰解读原码、反码和补码 有很详细的叙述,这里不过多赘述,在后文仅对移码作补充说明。下面是一张0、-0、1、-1的原码、反码、补码、移码对照表。
| 1 | -1 | +0 | -0 | |
|---|---|---|---|---|
| 原码 | 00000001 | 10000001 | 00000000 | 10000000 |
| 反码 | 00000001 | 11111110 | 00000000 | 11111111 |
| 补码 | 00000001 | 11111111 | 00000000 | 00000000 |
| 移码 | 10000001 | 01111111 | 10000000 | 00000000 |
由于在补码中10000000被用于表示-128,这就导致机器位为8位的补码表示在数轴上不对称。在浮点数运算中有阶码的对阶需求,为了简化操作,要求阶码不能为负数,因此使用补码表示的整个数轴都需要向右平移128位即2^7位,故有在补码第一位取反就是移码的说辞了。你学费了吗?🐶