int x = 1;
x = x<<31;
x = x>>31;结果为什么是0?
特别是最后右移部分是怎么做的?

解决方案 »

  1.   

    最后不是0,应该是-1才对int x=1;           0000,0000 0000,0000 0000,0000 0000,0001
    x=x<<31;           1000,0000 0000,0000 0000,0000 0000,0000
    x=x>>31;           1111,1111 1111,1111 1111,1111 1111,1111
    解释:
    <<是往左边移,后面补0
    >>是往右边移,前面补符号位
      

  2.   

    hbwhwang(catmiw的ID已经停用,现在用这个)的正解