如果说是有效位数,那么如果是2^32-1这个数,我左移1位不就超出了吗?为什么说尽有较低的5个位有用?可以避免你移动超过int所具备的位数?如果能够帮我分析解决再给100分

解决方案 »

  1.   

    以上是thinkinjava2的原文
    我个人认为应该是31位,而不是5个位有用
      

  2.   

    who may help me!
        Heartforever +i++:X+Rt:tXWRMR,
       .YRiIYRMViitVXRWRYMI++++itMM..
       .Y+,.,X::,,,YMMMMMMMMRVItXMti
        :X+:,X:,. .,iiIRMWMMMBBRMMBY.
        tR+:I:i:+Y:IitYVYMMMMMMMMRi.
        .+RXt:,::.::XXIBMMMMMMMMM+:
         ,RRXitY+,.::RWMMMMMMMMt.
          VYI:::,..:tVMMMMMMBY+.
          .VBBW:::::,i.MMMMMBi:.
          .tWRRVi:::.X:VMMMMMMY.
         ,+i+:,XYtt+:,i:,MMMBR:
      ...VV..:..:.tt::++:+,RMYMV.
     :M:::..:,.:,,,.+t+++Ytt.,+:
    tRt:,.:,.:,:.:+.,:++tit,
    :tXt:,:,:.:.,,+,:+YRY,
     :++:::.,:.:.::+:iMi
      ,Ri:::,:::::::+Ii
      ,+:Xii:,,::I:tit,.
       :BBt,:+::,::i+.
       :BWXX::::::iX.
       :BWVIi++t+:V+
       WBXtItii+iWI.
       :MWIYIti+iVRY,
        RBXVYItiiIYXWI,
        :MRWWVYttttIIXWt.
        .XMBRRXIti++itIXW,
        .BMBBRVIi+::+ttXX.
         ,MMBRXYti:::+tIW:
         tMMRWYti+++ittXV
          +MRVYti+++ittWI
         .VMWVtiiiiiitIR,
         .XBBWVttttttttXRv
        .,WBRBXVtttttttIWt
        :RWXWBXYtttttttYR:
       .iRWVIiBWYIttttttYW,
      .tWVYti:WRVIttittIVV   .:,,
      tWVIi++:XRVIIttttIXY  ..:YYtYi:tittV,
      tXYti+++tWRVYttittYWIiIYYVItt:iXW+....
     :WIt+++iXRBBVYItitIYXXYti+iIYt++:IMRi:.
    .:Xti+:+tRWt:BVYItitIYWVIIIYXXWXVXYt+i+IV:
    .tYi+::IWI:::BVVItitIXBRVIt:::::::tIVXRiXt
    :Viii++i:itIXBXVttitVW,        tBIX
    .XIiXIttIVRBRBIItttIRX         :VX
    .,tXXWWWVi+. RXXItiYRV         ..
           ,BWYi+IRX
           tBYiitWB,
           .WVtiiIRI
            VWtiiiIB,
            ,BIiiiiWt
            .BViiiiYV
            XXtii+YV
            iRiii+YY
            :Btii+XI
             Wtii+R:
             XY+t+B.
             YX+tYR.
             tX+iWV
             iXi+RI
             tYiIXX
            ,XtiIXRt.
            :BIVYRWIV
            +RYXXWiYR.
            iWIVYtXMV
            tBYItRtM+
            XBWttX:B:
           YYBXXYR:,R:
           tIYYYIY: i:
      

  3.   

    楼主,我是按下面这样理解的:希望我说的是对的,如果不对,我们再一起探讨:
    为什么说仅有较低的5个位有用?
    因为java中的int正好是32位,所以为了避免移动超过int具备的位数,则在二进制基础上只能移动5位,即2的5次方!如下:
    (-1)>>>=10
    -1的补码形式是:1111 1111 1111 1111 1111 1111 1111 1111
    无符号扩展右移10位就是: 0000 0000 0011 1111 1111 1111 1111 1111 这样输出就是4194303
    因为0<10<2的五次方,即10的二进制表示为1010,位数小于5,所以有效!
    如果是32,则33表示为10 0001,超过了5位,所以只有低5位有效,所以相当于0 0001
    则-1>>>=1就是2147483647不知楼主是否能看懂我的意思!
      

  4.   

    书上说的低5位有效,就是将位移符号右边的数也用二进制表示,这样int只能移动5位二进制数,即2的五次方,为了控制不超过int的范围,则只能有低5位有效!
      

  5.   

    楼上的大大,你的qq多少,我+你
    使这个意思嘛,用公式表示如下:
    (int number)(Shift operator)(右操作数)
    其中的右操作数最大值为2^5
    因该是这个意思吗?
      

  6.   

    楼上的大大,你的qq多少,我+你
    使这个意思嘛,用公式表示如下:
    (int number)(Shift operator)(右操作数)
    其中的右操作数最大值为2^5
    因该是这个意思吗?
    若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到
    =====
    2的5次方是32,而int的位数刚好是32个位,????????
    =====
    那么作者所说的低5位有用,就是说2^5中的指数5啊?
    这种说法有点猜出来的感觉哦!