我开个jbuilder试试先,刚才想去java网站找关于int的资料,没有找到,
还是自己试试,再答你。

解决方案 »

  1.   

    16进制的1位相当于二进制的4位
    int 是32位的,即8位16进制0xFFFFFFE=0x0FFFFFFE,  F=1111 0=0000前3次移动后第一位仍然是0,
    第4次第一位变1,变成0xFFFFFFE0 成为负数负数用补码表述,即正数取反+1
    32   = 0000....0010 0000 = 0x00000020
    ~32  = 1111....1101 1111 = 0xFFFFFFDF
    ~32+1= 1111....1110 0000 = 0xFFFFFFE0
      

  2.   

    终于看明白了,给你看看,我加了一句话
    class MultByTwo {
     public static void main(String args[]) {
      int i;
      int num = 0xFFFFFFE;  for (i = 0; i < 4; i++) {
       num = num << 1;
       System.out.println(num);
       System.out.println("  " + Integer.toHexString(num));-->我加了这句话
      }
     }
    }
    答案是
    536870908
      1ffffffc
    1073741816
      3ffffff8
    2147483632
      7ffffff0
    -32
      ffffffe0
    那样就很简单了,因为int的正数是从 0-0x7FFFFFE;
    负数是从0xFFFFFFfe -0x80000000
      

  3.   

    0xFFFFFFFF(-1) - 0x80000000 负数 
    0x00000000( 0) - 0x7FFFFFFF 正数