byte val=(byte)(i>>>4);

解决方案 »

  1.   

    class test4{
    public static void main(String[] argc){
    int i=-64;
    int s=i>>2;
    int test=i<<2;
    i = i>>>4;System.out.println("s="+s+"      test="+test+"    val="+i);
    }
    }print s=-16      test=-256    val=268435452
      

  2.   

    class test4{
    public static void main(String[] argc){
    int i=-64;
    int s=i>>2;
    int test=i<<2;
      
      byte val=(byte)(i>>>4);
    System.out.println("s="+s+"      test="+test+"    val="+val);
    }
    }
    编译通过
      

  3.   

    谢了,上边的兄弟!
    但是,编译后运行的结果怎么和java2英文认证教程上边第39页的例子的结果不一样的,那个上边的结果是 二进制 11111100,应该是十进制的-124的。可以解释一下原因么?
      

  4.   

    class test4{
    public static void main(String[] argc){
    int i=-64;
    int s=i>>2;
    int test=i<<2;
      
      byte val=(byte)(i>>>4);
    System.out.println("s="+s+"      test="+test+"    val="+val);
    }
    }结果:s=-16      test=-256    val=-4
      

  5.   

    to:bobokong
      老兄,可以知道你的oicq号码么?大家交个朋友了。
     
                                    me的:5856874
      

  6.   

    to javadew(飞呀飞)
    不好意思,我也只是在公司上上网,所以没有OICQ
    有问题要讨论就到CSDN来吧,这里气氛很好,高手也很多
      

  7.   

    jsyx()说的对,唉,我连基本的二进制也算错了,真是不好意思了。