我想知道5000低八位带符号右移两位的结果是多少?

解决方案 »

  1.   

    java 的int是32位的
    低八位是用于双字节的,java int是4个字节,你怎么区分低8位呢如果是0001 0011 1000 1000的话 低8位是1000 1000
    带符号右移两位
    1010 0010补齐前面3个字节是
    0000 0000 0000 0000 0001 0011 1010 0010
      

  2.   

    int a = 500;byte b = (byte) (a & 0xff);

    System.out.println(Integer.toBinaryString(b));b >>= 2;System.out.println(Integer.toBinaryString(b));
      

  3.   


    public class Demo02 {
    public static void main(String[] args){
    int a = 500;
    System.out.println(Integer.toBinaryString(a));
    a = a>>2;
    System.out.println(Integer.toBinaryString(a));
    }
    }
      

  4.   


    public class Demo02 {
    public static void main(String[] args){
    int a = 500;
    System.out.println(Integer.toBinaryString(a));
    a = a>>>2;
    System.out.println(Integer.toBinaryString(a));
    }
    }
    上面的有点小瑕疵 应该是带符号的右移 500是正数,右移加零哈
      

  5.   


    int a = 500;
    String bs = Integer.toBinaryString(a);
    //int占32位
    while (bs.length() < 32)
    bs = "0" + bs;
    System.out.println(bs); byte b = (byte) a;// 一个byte占8位,强制类型转换截取低8位 bs = Integer.toBinaryString(b);
    System.out.println(bs.substring(bs.length() - 8)); b >>= 2;// 带符号右移2位 bs = Integer.toBinaryString(b & 0xff);
    System.out.println(bs.substring(bs.length() - 8));00000000000000000000000111110100
    11110100
    11111101