[toc]
1. 原码表示法
$[X]_原 = \left\{\begin{aligned}\begin{equation} X,\qquad 2^n > X\ge 0 \\ 2^n-X, 0\ge X>-2^n \end{equation}\end{aligned} \right.$
其中n为小数点前的位数,小数时n=0
2. 补码表示法
模:一个字长为n+1位的纯整数的溢出量为$2^{n+1}$,即是以$2^{n+1}$模。一个纯小数的溢出量为2
同余:两个整数A,B除于同一个整数M,所得余数相同,称A和B对模M同余
只要确定了一个模,就可以找到一个与负数等价的正数来替代此负数,而这个正数可以用模加上负数本身求得,这样就可把减法运算用加法实现了
$[X]_补 =\left\{\begin{aligned}\begin{equation} X,\qquad\qquad 1 > X \ge 0 \\ 2^{n+1} + X,\quad 0 > X \ge -1(mod2) \end{equation}\end{aligned}\right.$
小数n=0
补码快捷方式:数值部分按位取反,末尾加1,符号位不变
表示范围:字长为n+1位的机器,补码定点整数表示范围是$-2^n\sim2^n-1$. 定点小数的-1补码表示为1.0000. # 3. 定点表示法 小数点的位置固定为最高有效位之前,符号位之后,记为$X_s.X_1X_2...X_n$ 定点小数的小数点位置是隐含约定的,并不需要真正的占据一个二进制位 当$X_s = 0$ 由$.X_1X_2...X_n$都为1时为最大正数 **定点小数的最大正数为**:$X_{最大正数} = (1 - 2^{-n})$ 由$.X_1X_2...X_n都为0时为最小正数$ **定点小数的最小正小数为**:$ X_{最小正数}=2^{-n}$ --- 当$X_s = 1$ 原码表示中由$.X_1X_2...X_n都为1时为最小负数$原码表示定点小数最小负数为:$X_{最小负数} = -(1-2^{-n})$
补码表示中由$.X_1X_2...X_n$都为0时为最小负数补码表示定点小数的最小负数为:$X_{最大负数} = -1$
整数和上面同理
在这里,为什么最大负数为-1?,在补码中,零具有唯一确定性,补码比原码少一个-0的表示,多一个-1的表示以及整数表示范围多了一个$-2^{n}$
4. 移码
由于补码很难直接判断真值大小,因为如果一个负数和正数比较会出现$[+21]_{补}=010101$和$[-21]_{补}=101011$比较出现$010101$小于$101011$的结果,然而实际上真值是$+21$大于$-21$,此时我们可以将所有的数往正数方向偏移一定的量,使得负数为正,再来比较数值的就不会出错
$[X]_{移} = 2^n + X(2^n>X\ge -2^n)$
$[X]_{移} = [X]_{补} + 2^n$
移码的表示范围:机器字长为n+1的计算机,移码定点整数的表示范围为$-2^n\sim(2^n-1)$
移码与补码:真值部分相同,最高位相反
5. 浮点数的表示方法
二进制N的浮点数的一般表示为$N=M*2^E$,其中E为阶码(用二进制数表示),M为尾数或有效位
浮点数的机器码表示
S(尾数M的符号位) | E_f(阶码E的符号位) | E(阶码) | M(尾数) |
---|---|---|---|
5.1 规格化浮点数
浮点数的基数为2,如果位数满足$2^{-1}\le|M|<1$,则称该浮点数为规格化浮点数
例如:十进制数-78,求它的规格化浮点数
$(-78)_{10}=(-1001110)_2 = -0.1001110*2^7$
则它的规格化浮点数为$-0.1001110*2^{111}$
如果阶码用移码5位表示,则$[+111] = [10000 + 111]_{移码}=[10111]移码$,其中阶码为0111,符号位为1
尾数用补码表示,且浮点数机器码共16位,则$[-0.1001110000]=[1.0110010000]_{补码}$,其中尾数0110010000,符号位为1
则规格化机器码表示为1\1\0111\0110010000