java吧 关注:1,178,820贴子:12,569,911
  • 5回复贴,共1

java中的移位运算符

只看楼主收藏回复

如题,java中的运算符号有三种:
<< : 左移运算符,num << 1,相当于num乘以2
>> : 右移运算符,num >> 1,相当于num除以2
>>> : 无符号右移,忽略符号位,空位都以0补齐
相信大家有些是不懂得吧,萌新来介绍介绍


IP属地:广东1楼2016-12-03 17:05回复
    >表示大于,如:if(a>b)...结果是boolean类型>>表示带符号右移,如:int i=15;
    i>>2的结果是3,移出的部分将被抛弃。转为二进制的形式可能更好理解,0000 1111(15)右移2位的结果是0000 0011(3),0001 1010(18)右移3位的结果是0000 0011(3)。
    >>>无符号右移:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。其他结构和>>相似。


    IP属地:广东2楼2016-12-03 17:07
    回复
      其中关于 >> 右移运算符,这里有这么一个点,符号位不变,左边补上符号位
      运算规则:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1
      eg: 11 >>2(11为int型)  11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011  把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。  最终结果是0000 0000 0000 0000 0000 0000 0000 0010。  转换为十进制是2。
      35 >> 2(35为int型)  35转换为二进制:0000 0000 0000 0000 0000 0000 0010 0011  把低位的最后两个数字移出:0000 0000 0000 0000 0000 0000 0000 1000  转换为十进制: 8


      IP属地:广东5楼2016-12-03 17:12
      回复
        有人问这些有什么用,哈哈,其实我也不知道呀,以前学se的时候有接触过,但是没怎么注意就忘了,但是在前几天加了一个Q群的时候,群验证码: 13 >> 2 << 2 = ?
        唉,我看了之后确实不会呀,百度了一下,了解了,但又迁引出了负二进制数转换成十进制数的知识点(补码,转码,原码),又学了一个,开心
        所以来这里记录一下(shui) 。。。


        IP属地:广东6楼2016-12-03 17:21
        回复
          厉害啊


          IP属地:山西8楼2018-05-26 09:55
          回复