在本篇中,你将掌握
原码、反码、补码、移码的定义和范围原码、反码、补码、移码的转换定点数:小数点的位置固定 ——常规技术 浮点数:小数点的位置不固定 ——科学计数法
无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。且通常只考虑无符号整数
原码的表示,分成定点整数和定点小数:
定点整数:符号位 + 数值部分(尾数),如 +5通常写为0,101(假设机器字长是4位)定点小数:符号位 + 数值部分(尾数),如 -0.5通常写为1,100(假设机器字长是4位)其表示范围如上图,对于机器字长为n+1位,原码整数可以表示的范围为: 0 至 2 0 + 2 1 + 2 2 + . . . + 2 n − 1 = 2 n − 1 ( 不 考 虑 符 号 位 ) 0至2^0+2^1+2^2+...+2^{n-1}=2^n-1 (不考虑符号位) 0至20+21+22+...+2n−1=2n−1(不考虑符号位) 原码小数可以表示的范围为: 0 至 2 − 1 + 2 − 2 + . . . + 2 − ( n ) = 1 − 2 − n ( 不 考 虑 符 号 位 ) 0至2^{-1}+2^{-2}+...+2^{-(n)}=1-2^{-n} (不考虑符号位) 0至2−1+2−2+...+2−(n)=1−2−n(不考虑符号位) 且真值0有 +0和-0的两种形式
反码: 若符号位为0,则反码与原码相同 若符号位位为1,则数值位全部取反
反码只是求补码的一个过程,其表示和范围如上图,不再阐述。
补码: 正数的补码 = 原码 负数的补码 = 反码末位 + 1(要考虑进位)
注意:补码的真值0只有一种表示形式了,且规定 定点整数1,0000000表示 − 2 7 -2^7 −27,也因此定点整数的补码的范围为 − 2 n 至 2 n − 1 -2^n至2^n-1 −2n至2n−1 定点小数1.0000000表示 − 1 -1 −1,定点小数的补码的范围为 − 1 至 1 − 2 − n -1至1-2^{-n} −1至1−2−n 而将补码转为原码的操作,对于正数 原码 = 补码,对于负数:尾数取反,末位+1
移码:补码的基础上将符号位取反。注意:移码只能用于表示整数
练习:
本篇重点: (1)原码、反码、补码、移码的定义和范围 (2)原码、反码、补码、移码的转换 本篇较为重点,需要自行计算掌握。