C# 位移运算

左移<< 运算符

x 向左位移若干个位,放弃 x 中经移位后会超出结果类型范围的那些高序位,将其余的位向左位移,将空出来的低序位均设置为零。

右移>> 运算符

x 向右位移若干个位

xintlong 类型时,放弃 x 的低序位,将剩余的位向右位移,如果 x 非负,则将高序空位位置设置为零,如果 x 为负,则将其设置为 1。

xuintulong 类型时,放弃 x 的低序位,将剩余的位向右位移,并将高序空位位置设置为零。

 

下面分别举正数左移,右移,负数左移,右移例子

 

例子(1):11>>2 

11的二进制:0000 1011

>>2         :0000 0010

结果          :2

 

例子(2):11<<2

11的二进制:0000 1011

<<2        :0010 1100

结果         :44

 

例子(3):-11>>2,取-11绝对值的二进制

11二进制:0000 1011

按位取反 :1111 0100

+1=补码:1111 0101

>>2      :1111 1101

按位取反:0000 0010

+1=原码:0000 0011

加上原本符号位=-3

 

例子(4):-11<<2,取-11绝对值的二进制

11二进制:0000 1011

按位取反:1111 0100

+1=补码:1111 0101

<<2     :1101 0100

按位取反:0010 1011

+1=原码:0010 1100

加上原本符号位结果:-44

 

总结

左移i>>count:也就是i / 2的count次方,再向下取整

例:11>>2=11/4=2

     -11>>2=-11/4=-3

右移i<<count:也就是i x 2的count次方

例子:11<<2=11x4=44

         -11<<2=-11x4=-44

 

本文由http://www.52sushen.com整理编辑

转载于:https://www.cnblogs.com/linlin/archive/2013/02/01/2888916.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值