位移详解

位移运算符:<<、>>、>>>

(1) (int) 144 << 3

  • int:4个字节(一个字节8位),so:32位
  • <<左移运算符
  • 144的二进制左移3位,前面(高位)去000(3个0),后面(低位)补000(3个0)。低位补0
    10010000 -> 10010000000
    结果:1152

注意点:
如果移动的位数超过了该类型的最大位数,编译器会对移动的位数取模移动。如果是int类型移动35位,实际只移动了35%32=3位。

(2) (int)144 >> 3

    1. “>>” 右移运算符
    1. 144的二进制右移3位,后面(低位)去000(3个0),前面(高位)补000(3个0)。高位补0

10010000 -> 10010
结果:18

  • 另一种理解:
    • 左移运算符:num << n
      • 相当于num乘以2的n次方
    • 右移运算符:num >> n
      • 相当于num除以2的n次方

(3) (int)144 >>> 3

  1. 无符号右移运算符
  2. 规则:与>>类似,只是忽略符号位扩展,高位补0
  3. 无符号右移运算符只是对32位和64位的值有意义

其他数据类型依次类推!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值