System.out.println(-1>>>=10);=多少
答案是4194303,但我不知道怎么来的,  帮我详细说说啊

解决方案 »

  1.   

    -1用十六进制表示是FFFF FFFF
    向右无符号移动(在前面添0)10位是003F FFFF
    也就是十进制的4194303
      

  2.   

    -1的16进制怎么是FFFF FFFF啊,FFFF FFFF向右无符号移动(在前面添0)10位怎么又是003F FFFF啊..帮我解释,解释啊
      

  3.   

    应该看一下计算机组成原理!
    int 是4个字节,第一位为符号位
    负数采用补码表示
    1的表示为 00000001
    -1的表示为 上面的求反(fffffffe)加1(ffffffff)
    >>>10 无符号右移,结果很显然呀 00000000001111111111111111111111=0x3fffff
      

  4.   

    你可以在dos下观看这个过程(不过寄存器是16位的)
    cmd
    debug
    -a100
    xxxx:0100 mov ax,-1
    xxxx:0103 mov cl,a
    xxxx:0105 shr ax,cl
    xxxx:0107 回车
    p=100
    p
    p
    观察AX 从FFFF 变为 003F