当前位置:   article > 正文

位扩展与位截断(四)

位扩展与位截断(四)

常见场景

1. 当小类型向大类型转换时, 就发生了位扩展. 如 byte -> int 的隐式转换.
2. 当大类型向小类型转换时, 就发生了位截断. 如 int -> byte 的显示转换.

扩展时一般值不变. 截断时值可能会改变.
  • 1
  • 2
  • 3
  • 4

1. 零扩展(无符号)

宽度为 w 的位向量 u ⃗ \vec u u = [ u w − 1 , u w − 2 , . . . , u 0 u_{w-1}, u_{w-2}, ... , u_{0} uw1,uw2,...,u0] 和 宽度为w

位向量 u 2 ⃗ \vec {u2} u2 = [ 0 , … , 0 , u w − 1 , u w − 2 , . . . , u 0 u_{w-1}, u_{w-2}, ... , u_{0} uw1,uw2,...,u0] , 其中 w > w ,

则 w 扩展 为 w 左高位补 0 的扩展, 称为零扩展.

B 2 U ( u ⃗ ) B2U(\vec u) B2U(u ) = B 2 U ( u 2 ⃗ ) B2U(\vec {u2}) B2U(u2 ) .

2. 符号扩展(补码)

宽度为 w 的位向量 u ⃗ \vec u u = [ u w − 1 , u w − 2 , . . . , u 0 u_{w-1}, u_{w-2}, ... , u_{0} uw1,uw2,...,u0] 和 宽度为w

位向量 u 2 ⃗ \vec {u2} u2 = [ u w − 1 , . . . , u w − 1 , u w − 1 , u w − 2 , . . . , u 0 u_{w-1} , ... , u_{w-1} , u_{w-1}, u_{w-2}, ... , u_{0} uw1,...,uw1,uw1,uw2,...,u0] ,

其中 w > w , 则 w 扩展 为 w 左高位补最高有效位的值, 这种扩展称为符号扩展.

同样, B 2 U ( u ⃗ ) B2U(\vec u) B2U(u ) = B 2 U ( u 2 ⃗ ) B2U(\vec {u2}) B2U(u2 ) .

3. 无符号截断

x ⃗ \vec x x 等于位向量 [ x w − 1 , x w − 2 , . . . , x 0 x_{w-1}, x_{w-2}, ... , x_{0} xw1,xw2,...,x0] , 而 x 2 ⃗ \vec {x2} x2 是将其截断为 k 位的结果:

x 2 ⃗ \vec {x2} x2 = [ x k − 1 , x k − 2 , . . . , x 0 x_{k-1}, x_{k-2}, ... , x_{0} xk1,xk2,...,x0] . 令 x = B 2 U w ( x ⃗ ) B2U_w(\vec x ) B2Uw(x ) , x2 = B 2 U k ( x 2 ⃗ ) B2U_k(\vec {x2} ) B2Uk(x2 ) ,

则 x2 = x mod 2 k 2^k 2k = B 2 U w ( x ⃗ ) B2U_w(\vec x ) B2Uw(x ) ( mod 2 k 2^k 2k )

4. 补码截断

x ⃗ \vec x x 等于位向量 [ x w − 1 , x w − 2 , . . . , x 0 x_{w-1}, x_{w-2}, ... , x_{0} xw1,xw2,...,x0] , 而 x 2 ⃗ \vec {x2} x2 是将其截断为 k 位的结果:

x 2 ⃗ \vec {x2} x2 = [ x k − 1 , x k − 2 , . . . , x 0 x_{k-1}, x_{k-2}, ... , x_{0} xk1,xk2,...,x0] . 令 x = B 2 U w ( x ⃗ ) B2U_w(\vec x ) B2Uw(x ) , x2 = B 2 T k ( x 2 ⃗ ) B2T_k(\vec {x2} ) B2Tk(x2 ) ,

则 x2 = U 2 T k U2T_k U2Tk ( x mod 2 k 2^k 2k ) = U 2 T k U2T_k U2Tk ( B 2 U w ( x ⃗ ) B2U_w(\vec x ) B2Uw(x ) mod 2 k 2^k 2k )

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/272428
推荐阅读
相关标签
  

闽ICP备14008679号