位扩展与位截断(四)

常见场景

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

扩展时一般值不变. 截断时值可能会改变.

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 )

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值