Operating System-Old knowledge
进制转换
十进制 → 二进制
整数
除二取余,每次除法的商和余数放到同一行,直到商为 $0$ 停止,此时把所有的数字(包含最后的商为 $0$ 产生的余数),从下往上排列,即可。
小数
乘二取整,每次除法的积和积的整数放到同一行,直到某次运算得到的小数部分为 $0$ 停止,此时把所有的数字(包含最后的小数为 $0$ 的整数),从上忘下排列,最后加上小数点即可。
原码、反码、补码、移码
原码、反码和补码这三个概念主要是针对有符号数(signed numbers)而言的。
原码表示法中,规定整数的符号位和数值位之间用逗号(,)隔开,小数的符号位和数值位之间用点号(.)隔开
对于正数来说,原码$=$反码$=$补码
对于负数来说,反码$=$原码除符号位各位取反,补码$=$反码$+1$,所以负数的原码、反码、补码的符号位都是 $1$
例子
在 $8$ 位寄存器中,
无符号数,可以表示从 $0$ 到 $+127$ 的整数。
用原码表示,最高位为符号位,则可以表示从 $-127$ 到 $+127$ 的整数,其中 $0$ 有两种表示方法:$[+0]原=0,0000000$ ,$[-0]原=1,0000000$
- 用反码表示,最高位为符号位,则可以表示从 $-127$ 到 $+127$ 的整数,其中 $0$ 有两种表示方法:$[+0]反=0,0000000$ ,$[-0]反=1,1111111$
- 用补码表述,最高位为符号位,则可以表示从 $-128$ 到 $+127$ 的整数,比原码多了一个。
- 其中 $0$ 只有一种表示方法,$[+0]补=[-0]补=0,0000000$;
- $[-128]补=1,0000000$ ,是从 $[-0]原=0,0000000$ 转换过来,如果对 $[-128]补$ 再次求补,会得到$[-0]原$
移码是为了便于比较,将每一个正值加上 $2^n$ ,其中 $n$ 为整数的位数,就得到了移码。
移码可以快速计算,计算出来正值的补码之后,将补码的符号位取反就可以得到移码。
定点数
小数点固定在某一位置的数被称为定点数。
当小数点位于数符和第一数值位之间,表示的是纯小数;
当小数点位于数值位之后,表示的是纯整数。
当机器处理的数不是纯小数或者纯整数的时候,必须乘以一个“比例因子”,以避免溢出。
浮点数
浮点数通常被表示为
其中, $N$ 是要表示的数, $S$ 是尾数(可正可负), $j$ 是阶码(可正可负),$r$ 是基数,可以取 $2,4,8,16,\cdots$
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 The Site Of Liu!


