深入理解计算机系统——第二章—2.2整数表示

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_40199047/article/details/101318049

2.2 整数表示

符号 类型 含义
B 2 T w B2T_w 函数 二进制转补码
B 2 U w B2U_w 函数 二进制转无符号数
U 2 B w U2B_w 函数 无符号数转二进制
U 2 T w U2T_w 函数 无符号数转补码
T 2 B w T2B_w 函数 补码转二进制
T 2 U w T2U_w 函数 补码转无符号数
T M i n w TMin_w 常数 最小补码值
T M a x w TMax_w 常数 最大补码值
U M a x w UMax_w 常数 最大无符号数
+ w t +{_w^t} 常数 补码加法
+ w u +{_w^u} 常数 无符号数加法
w t *{_w^t} 常数 补码乘法
w u *{_w^u} 常数 无符号数乘法
w t -{_w^t} 常数 补码取反
w u -{_w^u} 常数 无符号数取反

2.2.2 无符号数(Binary to Unsigned)编码

原理:无符号数编码定义
x = [ x w 1 , x w 2 , . . . , x 0 ] \vec x = [ x_{w-1},x_{w-2},...,x_{0}]
B 2 U w ( x ) = ˙ i = 0 w 1 x i 2 i 2.1 B2U_w(\vec x) \dot = \sum_{i = 0}^{w-1}x_i2^i\qquad (2.1)
e . g . : B 2 U 4 ( [ 0110 ] ) = 0 2 3 + 1 2 2 + 1 2 1 + 0 2 0 = 6 2.2 \red {\tt{e.g.:}}\\ B2U_4([0110])=0*2^3+1*2^2+1*2^1+0*2^0=6\qquad (2.2)

t i p s : U M a x w = ˙ i = 0 w 1 2 i = 2 w 1 \blue {tips:} \\ UMax_w \dot = \sum_{i=0}^{w-1}2^i=2^w-1

2.2.3 补码(Binary to Two’s-complement)编码

原理:补码编码定义
x = [ x w 1 , x w 2 , . . . , x 0 ] B 2 T w ( x ) = ˙ x w 1 2 w 1 + i = 0 w 2 x i 2 i 2.3 e . g . : B 2 T 4 ( [ 1110 ] ) = 1 2 3 + 1 2 2 + 1 2 1 + 0 2 0 = 2 2.4 T M i n w = ˙ 2 w 1 T M a x w = ˙ i = 0 w 2 2 i = 2 w 1 1 t i p s : T M i n = T M a x + 1 e x t e n d : O n e s C o m p l e m e n t : B 2 O w ( x ) = ˙ x w 1 ( 2 w 1 1 ) + i = 0 w 2 x i 2 i S i g n e d M a g n i t u d e : B 2 S w ( x ) = ˙ ( 1 ) x w 1 ( i = 0 w 2 x i 2 i ) \vec x = [ x_{w-1},x_{w-2},...,x_{0}]\\[2ex] B2T_w(\vec x) \dot =-x_{w-1}2^{w-1}+ \sum_{i = 0}^{w-2}x_i2^i\qquad (2.3)\\[2ex] \red {\tt{e.g.:}}\\[2ex] B2T_4([1110])=1*2^3+1*2^2+1*2^1+0*2^0=-2\qquad (2.4)\\[2ex] TMin_w \dot =-2^{w-1} \\[2ex] TMax_w \dot = \sum_{i=0}^{w-2}2^i=2^{w-1}-1 \\[2ex] \blue{tips:} \\[2ex] |TMin|=|TMax|+1 \\[2ex] \green {extend:} \\[2ex] 反码(Ones' Complement): \\[2ex] B2O_w(\vec x) \dot =-x_{w-1}(2^{w-1}-1)+ \sum_{i = 0}^{w-2}x_i2^i \\[2ex] 原码(Signed-Magnitude): \\[2ex] B2S_w(\vec x) \dot =(-1)^{x_{w-1}}*( \sum_{i = 0}^{w-2}x_i2^i)

2.2.4 有符号数和无符号数之间的转换

原理:补码转换为无符号数
T m i n w x T m a x w : T 2 U w ( x ) = { x + 2 w , x < 0 x , x 0 2.5 e . g . : T 2 U 16 ( 12345 ) = 12345 + 2 16 = 53191 T 2 U w ( 1 ) = 1 + 2 w = U M a x w Tmin_w \le x \le Tmax_w: \\[2ex] T2U_w( x) =\begin{cases} x+2^w, & x<0 \\[2ex] x,& x\geq0 \end{cases}\qquad (2.5) \\[2ex] \red{\tt {e.g.:}} \\[2ex] T2U_{16}(-12345)=-12345+2^{16}=53191 \\[2ex] T2U_{w}(-1)=-1+2^{w}=UMax_w
推导:补码转换为无符号数
B 2 U w ( T 2 B w ( x ) ) = T 2 U w ( x ) = x + x w 1 2 w 2.6 e . g . : B2U_w(T2B_w(x))=T2U_w(x)=x+x_{w-1}2^w \qquad (2.6)\\[2ex] \red { \tt {e.g.:}} \\[2ex]
在这里插入图片描述
原理:无符号数转换为补码
0 u U M a x w : U 2 T w ( u ) = { u , u T M a x w u 2 w , u > T M a x w 2.7 0\le u \le UMax_w : \\[2ex] U2T_w( u) = \begin{cases} u, & u\leq TMax_w \\[2ex] u-2^w, & u>TMax_w \end{cases} \qquad (2.7)
推导:无符号数转换为补码
u = U 2 B w ( u ) = U 2 T w ( u ) 2.1 2.3 U 2 T w ( u ) = u w 1 2 w + u 2.8 c o n c l u s i o n 0 x T m a x w T 2 U w ( x ) = x = U 2 T w x > 0 x > T m a x w T 2 u w ( x ) = x ± 2 w T 2 U w ( T M i n w ) = 2 w 1 + 2 w = 2 w 1 \vec u=U2B_w(u)=U2T_w(u) \\[2ex] 结合公式(2.1)和(2.3)有 \\[2ex] U2T_w(u)=-u_{w-1}2^w+u \qquad (2.8)\\[2ex] \green {conclusion:} \\[2ex] \purple { 0\leq x \leq Tmax_w \\[2ex] T2U_w(x)=x=U2T_w \\[2ex] x>0||x>Tmax_w \\[2ex] T2u_w(x)=x \pm 2^w \\[2ex] T2U_w(TMin_w)=-2^{w-1}+ 2^w=2^{w-1}}

2.2.6 扩展一个数字的位表示

原理:无符号数的零扩展
w u = [ u w 1 , u w 2 , . . . , u 0 ] w u = [ 0 , 0 , u w 1 , u w 2 . . . , u 0 ] , w > w B 2 U w ( u ) = B 2 U w ( u ) 定义宽度为w的位向量 \\[2ex] \vec u=[u_{w-1},u_{w-2},...,u_{0}] \\[2ex] 和宽度为w'的位向量 \\[2ex] \vec u'=[\blue {0,0},u_{w-1},u_{w-2}...,u_{0}], \\[2ex] 其中w'>w。则 \\[2ex] B2U_w(\vec u)=B2U_{w'}(\vec u')。
原理:补码数的符号扩展
w x = [ x w 1 , x w 2 , . . . , x 0 ] w x = [ x w 1 , , x w 1 , x w 2 , . . . , x 0 ] , w > w B 2 T w ( x ) = B 2 T w ( x ) 定义宽度为w的位向量 \\[2ex] \vec x=[\blue {x_{w-1}},x_{w-2},...,x_{0}] \\[2ex] 和宽度为w的位向量 \\[2ex] \vec x'=[\blue {x_{w-1},,x_{w-1}},x_{w-2},...,x_{0}], \\[2ex] 其中w'>w。则 \\[2ex] B2T_w(\vec x)=B2T_{w'}(\vec x)。
推导:补码数值的符号扩展
w = w + k    B 2 T w + k ( [ x w 1 , . . . , x w 1 , x w 1 , x w 2 , . . . , x 0 ] ) = B 2 T w ( [ x w 1 , x w 2 , . . . , x 0 ] ) k B 2 T w + 1 ( [ x w 1 , x w 1 , x w 2 , . . . , x 0 ] ) = B 2 T w ( [ x w 1 , x w 2 , . . . , x 0 ] ) 2.3 B 2 T w + 1 ( [ x w 1 , x w 1 , x w 2 , . . . , x 0 ] ) = x w 1 2 w + i = 0 w 1 x i 2 i = x w 1 2 w + x w 1 2 w 1 + i = 0 w 2 x i 2 i = x w 1 2 w 1 + i = 0 w 2 x i 2 i = B 2 T w ( [ x w 1 , x w 2 , . . . , x 0 ] ) 令w'=w+k \; 我们要证明 \\[2ex] B2T_{w+k}([\blue {x_{w-1},...,x_{w-1},x_{w-1}},x_{w-2},...,x_{0}])=B2T_{w}([\blue {x_{w-1}},x_{w-2},...,x_{0}]) \\[2ex] 对k进行归纳证明,只要扩展一位保持这种属性就可以证明以上等式成立 \\[2ex] B2T_{w+1}([\blue {x_{w-1},x_{w-1}},x_{w-2},...,x_{0}])=B2T_{w}([\blue {x_{w-1}},x_{w-2},...,x_{0}]) \\[2ex] 通过公式(2.3)左边展开 \\[2ex] B2T_{w+1}([\blue {x_{w-1},x_{w-1}},x_{w-2},...,x_{0}])=-\blue{x_{w-1}}2^w+\sum_{i=0}^{w-1}x_i2^i \\[2ex]=-\blue{x_{w-1}}2^w+\blue{x_{w-1}}2^{w-1}+\sum_{i=0}^{w-2}x_i2^i \\[2ex] =-\blue{x_{w-1}}2^{w-1}+\sum_{i=0}^{w-2}x_i2^i \\[2ex] = B2T_{w}([\blue {x_{w-1}},x_{w-2},...,x_{0}])

2.2.7 截断数字

原理:截断无符号数

猜你喜欢

转载自blog.csdn.net/weixin_40199047/article/details/101318049
今日推荐