各位java大侠,小弟有个问题求解:
    下面这句话为什么会打印出1呢?System.out.println(1<<32);

解决方案 »

  1.   

    “<<”这个符号是移位用的
      

  2.   

    1应该是int型,左移32位~溢出啦
      

  3.   

    用long就正常了
    long ll = 1L;
    System.out.println(ll<<32);
      

  4.   

    int类型占4个字节,1个字节8位。1<<32:1左移32位,整好超出4个字节多出来1位,所以结果是1。如果你1<<33的话,多出2位,结果就应该是2了。
      

  5.   

    问大家一个问题,java中的"<<"是循环左移还是无循环左移?
      

  6.   

    这么看的话  java中的"<<"应该是循环左移吧
      

  7.   

    我想这个左移应该是循环左移
    而JAVA整形变量是32位,移32次后,又回到了起点,再移3次,正好是35
    谢谢各位!