中间的是张图,
unusedbits  | Bits3     |Bits2    |Bits1   | Bits0我也看不懂到底是什么意思
可能是switch(status)
      status=1   输出readey to receive a requst
我被搞糊涂了

解决方案 »

  1.   

    这没有什么难理解的,就是要你判断某一位是否为1
    此题中,如果
    bit0=1输出readey to receive a requst
    bit1=1输出processing a requst  
    bit2=1输出error in recovery process
    bit3=1输出Unrecoverable error
    其实如果你知道一点点WIN32的只是的话,就很好理解了,
    比如一个窗口,它的窗口可以有最小化按钮,最大化按钮,
    关闭按钮,有系统菜单等等,微软的工程师们就用位的方法
    来判断该窗口拥有那些属性(用位与的方法)
    比如,假设用00000001B表示窗口有系统菜单,
    用00000010B表示窗口有最大化按钮,那么00000011B表示
    窗口既有系统菜单,又有最大化按钮,而如果要去除某个
    属性,只要将那位取反就可以了,十分方便,而通常一个
    整型有4字节,则可以表示32种属性,所以很是高效。下面的代码为了求简洁清晰,直接用十六进制表示了,
    并且只写了两个static的方法public class BitCompute
    {
    public static void returnBit(int status)
    {
    int n=0x00000008;
    System.out.println("If status="+status+", then output:");

    for(int i=status;n!=0x00000000;n>>=1,i=status)
    {
    i&=n;
    switch(i)
    {
    case 0x00000008:
    System.out.println("Unrecoverable err");break;
    case 0x00000004:
    System.out.println("err in recovery process");break;
    case 0x00000002:
    System.out.println("processing a requst");break;
    case 0x00000001:
    System.out.println("ready to receive a requst");break;
    }
    }
    }

    public static void main(String[] args)
    {
    returnBit(8);
    System.out.println();
    returnBit(7);
    }
    }/*输出结果:
    If status=8, then output:
    Unrecoverable errIf status=7, then output:
    err in recovery process
    processing a requst
    ready to receive a requst
    */
      

  2.   

    刚刚发的那个是从高位到低位判断末四位的,我看题意是从低位到高位判断的,
    所以修改一下,再发:
    public class BitCompute
    {
    public static void returnBit(int status)
    {
    int n=0x00000001;
    System.out.println("If status="+status+", then output:");

    for(int i=status;n!=0x00000010;n<<=1,i=status)
    {
    i&=n;
    switch(i)
    {
    case 0x00000008:
    System.out.println("Unrecoverable err");break;
    case 0x00000004:
    System.out.println("err in recovery process");break;
    case 0x00000002:
    System.out.println("processing a requst");break;
    case 0x00000001:
    System.out.println("ready to receive a requst");break;
    }
    }
    }

    public static void main(String[] args)
    {
    returnBit(8);
    System.out.println();
    returnBit(7);
    }
    }
    /*输出结果
    If status=8, then output:
    Unrecoverable errIf status=7, then output:
    ready to receive a requst
    processing a requst
    err in recovery process*/