目录
第一章.计算机组成与体系结构
ps: 在上午考试中一般占到6分
第一节.数据的表示
进制的转换
R R R进制转十进制使用按权展开法。其具体操作方式为 : 将 R R R进制数的每一位数值用 R k R^{k} Rk形式表示,即幂的底数是 R R R,指数为 k k k, k k k与该位和小数点之间的距离有关。当该位位于小数点左边, k k k值是该位和小数点之间数码的个数,而当该位位于小数点右边, k k k值是负值,其绝对值是该位和小数点之间数码的个数加 1 1 1。
例如: 二进制 10100.01 = 1 × 2 4 + 1 × 2 2 + 1 × 2 − 2 10100.01 = 1 \times 2^{4} + 1 \times 2^{2} + 1 \times 2^{-2} 10100.01=1×24+1×22+1×2−2
例如: 七进制 604.01 = 6 × 7 2 + 4 × 7 0 + 1 × 7 − 2 604.01 = 6 \times 7^{2} + 4 \times 7^{0} + 1 \times 7^{-2} 604.01=6×72+4×70+1×7−2
十进制转 R R R进制使用短除法。其具体操作方式为: 将 R R R作为除数,十进制数作为被除数,即将十进制数除以 R R R再取余,直到商等于0为止,然后将余数由下往上按顺序排列。
例如: 将94转换为二进制数。
2 94 余 0 2 47 1 2 23 1 2 11 1 2 5 1 2 2 0 2 1 1 0 得到结果为 1011110 \begin{array}{l} \begin{array}{l|ll} 2 & 94 & \text { 余 } & 0 \\ 2 & 47 && 1 \\ 2 & 23 && 1 \\ 2 & 11 && 1 \\ 2 & 5 && 1 \\ 2 & 2 && 0 \\ 2 & 1 && 1 \\ \hdashline & 0 \end{array}\\ \text { 得到结果为 } 1011110 \end{array} 2222222944723115210 余 0111101 得到结果为 1011110
二进制转八进制与十六进制。其具体操作方式为: 将二进制数以小数点为界向左及向右每三个一组(转八进制),或者每四个一组(转十六进制),缺的数用零来补充,然后依次通过按权展开法转化为相应的进制数然后按顺序排列即可。
10 001 110 2 1 6 1000 1110 8 E 10{\color{Blue} 001} {\color{Red} 110} \\ 2 \quad 1 \quad 6 \\ 1000{\color{Red} 1110} \\ 8 \quad E 10001110216100011108E
原码、反码、补码、移码
原码: ①将一个数转换为二进制的表达形式 ②如果该二进制不足8位就在其左方进行补零。其中首位为符号位,0表示正,1表示负,故首位需要根据正负进行填充。③我们将1和-1的原码相加后得到的原码不是0,说明原码的操作方式是不能直接运用到计算机中进行运算的,故提出了其它编码方式。
反码: ①正数的反码与原码一致;负数的反码是符号位不变,然后将后面所有位按位取反(1变0、0变1)。②1和-1的反码的运算是正确的,就是看起来有些怪异,结果为-0。
补码: ①正数的补码与原码、反码一致;负数的补码是在反码的基础上加一。②我们将1和-1的补码相加后得到的补码结果为0,说明补码的操作方式是可以直接运用到计算机中进行运算的。
移码: ①通常用于表示浮点运算中的阶码 ②正负数的移码都只是将补码的首位按位取反即可。③为什么会存在移码呢? 如果我们使用补码在竖轴(y轴)上进行表示感觉不好理解,上方为正数但是首位为0,而将符号位改变就比较好理解。同时移码进行相关操作也能够得到正确的值,但就是看起来有些怪异,结果为+0。
数值1 数值-1 1-1 原码 00000001 10000001 10000010 反码 00000001 11111110 11111111 补码 00000001 11111111 00000000 移码 10000001 01111111 10000000 \begin{array}{|c|c|c|c|} \hline & \text { 数值1 } & \text { 数值-1 } & \text { 1-1 } \\ \hline \text { 原码 } & 00000001 & 10000001 & 10000010 \\ \hline \text { 反码 } & 00000001 & 11111110 & 11111111 \\ \hline \text { 补码 } & 00000001 & 11111111 & 00000000 \\ \hline \text { 移码 } & 10000001 & 01111111 & 10000000 \\ \hline \end{array} 原码 反码 补码 移码 数值1 00000001000000010000000110000001 数值-1 10000001111111101111111101111111 1-1 10000010111111110000000010000000
数据表示范围
整数 原码 − ( 2 n − 1 − 1 ) ∼ 2 n − 1 − 1 反码 − ( 2 n − 1 − 1 ) ∼ 2 n − 1 − 1 补码 − 2 n − 1 ∼ 2 n − 1 − 1 \begin{array}{|c|c|} \hline & \text { 整数 } \\ \hline \text { 原码 } & -\left(2^{n-1}-1\right) \sim 2^{n-1}-1 \\ \hline \text { 反码 } & -\left(2^{n-1}-1\right) \sim 2^{n-1}-1 \\ \hline \text { 补码 } & -2^{n-1} \sim 2^{n-1}-1 \\ \hline \end{array} 原码 反码 补码 整数 −(2n−1−1)∼2n−1−1−(2n−1−1)∼