定点数表示方法 |
您所在的位置:网站首页 › 八位移码范围 › 定点数表示方法 |
1. 真值和机器数 真值:数的实际值,用正负号和绝对值的某进制形式来表示,如+1010,-12,-FFFF等. 机器数:真值在计算机中的二进制表示,特点是符号数字化且数的大小受机器字长限制,其表示形式有原码,补码,反码,移码等. 2. 原码. 1). 定点小数: \[{x_{[{\rm{原}}]}} = \left\{ {\begin{array}{*{20}{l}}{x,0 \le x < 1}\\{{2^0} - x = {2^0} + \left| x \right|, - 1 < x \le 0}\end{array}} \right.\] (其中x[原]是机器数,x是真值,最高位为符号位,下同.) 表示范围: \[\max = 1 - {2^{ - n}},\min = - (1 - {2^{ - n}})\] (n是指x除符号位的位数,下同) 如: x=+0.1011, x[原]=0.1011 x=-0.1011, x[原]=1.1011 2). 定点整数: \[{x_{[原]}} = \left\{ \begin{array}{l}x,0 \le x < {2^{\rm{n}}}\\{2^n} - x = {2^n} + |x|, - {2^n} < x \le 0\end{array} \right.\] 表示范围: \[\max = {2^n} - 1,\min = - ({2^n} - 1)\] 如:x=+1011,x[原]=01011 x=-1011,x[原]=11011 3). 特点: 原码实质上为符号位加上数的绝对值,0正1负; 原码零有两个编码,+0和 -0编码不同,表示不唯一; 原码加减运算复杂,乘除运算规则简单; 原码表示简单,易于同真值之间进行转换. 3. 补码 1). 定点小数: \[{x_{[补]}} = \left\{ \begin{array}{l}x,0 \le x < 1\\2 + x = 2 - |x|, - 1 \le x \le 0\end{array} \right.(\bmod 2)\] 表示范围: \[\max = 1 - {2^{ - n}},\min = - 1\] 如:x=+0.1011, x[补]=0.1011 x=-0.1011, x[补]=10+x=10.0000-0.1011=1.0101 2). 定点整数: \[{x_{[补]}} = \left\{ {\begin{array}{*{20}{l}}{x,0 \le x < {2^{\rm{n}}},0 \le x < {2^n}}\\{{2^{n + 1}} + x = {2^{n + 1}} - |x|, - {2^n} \le x \le 0}\end{array}(\bmod {2^{n + 1}})} \right.\] 表示范围: \[\max = {2^n} - 1,\min = - {2^n}\] 如:x=+1011,x[补]=01011 x=-1011, x[补]=2^5 – |-1011|=100000 – 1011=10101 3). 特点 负数补码实质上为原码除符号位按位取反再加1 补码最高一位为符号位,0正1负; 补码零有唯一编码; 补码能很好用于加减运算; 补码满足x[补]+(-x)[补]=0; 补码最大的优点在于能够将减法运算转换成加法运算,其中符号位参与运算,它满足: \[\begin{array}{*{20}{l}}{{{(x{\rm{ }} + {\rm{ }}y)}_{\left[ 补 \right]}} = {\rm{ }}{x_{\left[ 补 \right]}} + {\rm{ }}{y_{\left[ 补 \right]}}}\\{{{(x{\rm{ }} - {\rm{ }}y)}_{\left[ 补 \right]}} = {\rm{ }}{x_{\left[ 补 \right]}} + {\rm{ (}} - y{)_{\left[ 补 \right]}}}\end{array}\] 例如: \[\begin{array}{l}x = {11_{[10]}} = {1011_{[2]}},y = {5_{[10]}} = {0101_{[2],}}\\{(x - y)_{[补]}} = {x_{[补]}} + {( - y)_{[补]}} = 01011 + 11011 = 100110(溢出) = 00110 = {6_{[10]}} = x - y\;\;\end{array}\] 4). 补码和原码转换. 正数:x[补]=x[原] 负数:按位取反,末位加1(符号位除外) 如:x= -1001001, x[原]=11001001,x[补]=10110110+1=10110111 5). 补码和真值的转换 \[{\rm{补码}}\left\{ \begin{array}{l}{\rm{符号 = }}0{\rm{ - 正}},{\rm{余下为数值部分}}\\{\rm{符号 = }}1{\rm{ - 负}},{\rm{余下求补为数值部分}}\end{array} \right.\] 4. 反码 1). 定点小数 \[{x_{[{\rm{反}}]}} = \left\{ {\begin{array}{*{20}{l}}{x,0 \le x < 1}\\{(2 - {2^{ - n}}) + x = 2 + x - {2^{ - n}}, - 1 < x \le 0}\end{array}} \right.\] 范围: \[\max = 1 - {2^{ - n}},\min = - (1 - {2^{ - n}})\] 如:x=0.1011,x[反]=0.1011 x=-0.1011,x[反]=1.0100 2). 定点整数 \[{x_{[{\rm{反}}]}} = \left\{ {\begin{array}{*{20}{l}}{x,0 \le x < {2^{\rm{n}}}}\\{({2^{n + 1}} - 1) + x = {2^{n + 1}} + x - 1, - {2^n} < x \le 0}\end{array}} \right.\] 范围: \[\max = {2^n} - 1,\min = - ({2^n} - 1)\] 如:x=1011,x[反]=01011 x=-1011,x[反]=10100 3). 特点 负数反码实质上为原码除符号按位求反,也就是补码-1; 反码零有两个编码,+0 和 -0 的编码不同; 反码难以用于加减运算; 反码的表示范围与原码相同. 5. 移码:用于表示浮点数的阶码 1). 定义 \[x[移] = {2^n} + x, - {2^n} \le x < {2^n}\] 范围: \[\max = {2^{n + 1}} - 1,\min = 0\] 如:x=+1011,x[移]=11011 x=-1011,x[移]=00101 2). 特点 移码中符号位表示的规律与原码,补码,反码相反——"1"正"0"负; 移码为全0时所对应的真值最小,为全1时所对应的真值最大,移码的大小直观地反映了真值的大小,这有助于两个浮点数进行大小比较; 真值0在移码中的表示形式是唯一的; 移码把真值映射到一个正数域,所以可将移码视为无符号数,直接按无符号数规则比较大小; 同一数值的移码和补码除最高位相反外,其他各位相同. 3). 移码和补码转换 \[\begin{array}{l}{x_{[补]}} = \left\{ \begin{array}{l}x,0 \le x < {2^n}\\{2^{n + 1}} + x, - {2^n} \le x \le 0\end{array} \right.\\{x_{[移]}} = {2^n} + x, - {2^n} \le x < {2^n}\\{x_{[移]}} = \left\{ \begin{array}{l}{x_{[补]}} + {2^n},0 \le x < {2^n}\\{x_{[补]}} + {2^n} - {2^{n + 1}} = {x_{[补]}} - {2^n}, - {2^n} \le x \le 0\end{array} \right.\end{array}\] |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |