进制转换

十进制 → 二进制

整数

除二取余,每次除法的商和余数放到同一行,直到商为 $0$ 停止,此时把所有的数字(包含最后的商为 $0$ 产生的余数),从下往上排列,即可。

image-20241009190729837

小数

乘二取整,每次除法的积和积的整数放到同一行,直到某次运算得到的小数部分为 $0$ 停止,此时把所有的数字(包含最后的小数为 $0$ 的整数),从上忘下排列,最后加上小数点即可。

image-20241009191055146

原码、反码、补码、移码

原码、反码和补码这三个概念主要是针对有符号数(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$

计算机组成原理-唐朔飞