移位运算(二)

1. 分类

1.1 左移

对于一个位表示为 [ xw-1, xw-2, … , x0 ] 的操作数, x << k 会生成一个值, 其位表示为 [ xw-k-1, xw-k-1, … , x0, 0 , … , 0 ] , 也就是说, x向左移动k位, 丢弃最高的k位, 并在右端补 k 个0.

1.2 算术右移

右移一般指算术右移, 即x >> k, 是指一个位表示为 [ xw-1, xw-2, … , x0 ] 右移后, 其位表示为 [ xw-1, … , xw-1, xw-1, xw-2 , … , xk ] , 右端丢弃k个位, 并在左端补 k 个最高有效位的值. 这对有符号整数运算非常有用.

1.3 逻辑右移

又称无条件右移, 是指一个位表示为 [ xw-1, xw-2, … , x0 ] 的操作数, x >>> k 会生成一个值, 其位表示为 [ 0, … , 0 , xw-1, xw-2 , … , xk ] , x向右移动k位, 右端丢弃最低的k个位, 并在左端补 k 个0.

2.注意

  1. 对整数进行左移操作时, 可能会改变符号.
  2. 移位运算优先级低于加减法.
  3. 一般来说, 0 ≤ k 0 \leq k 0k ≤ w \leq w w, 若 k &gt; w k \gt w k>w, 则移动量为 k mod w 即可.
    如w=32, 则a << 32 , a >> 36 , a >> 40 等价于 a , a >> 6 , a >> 8.
  4. 右移常用应用如取指定一段位的值. 如: 取5~8位的值, a >>> 4 & 0xF
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值