中间的是张图,
unusedbits | Bits3 |Bits2 |Bits1 | Bits0我也看不懂到底是什么意思
可能是switch(status)
status=1 输出readey to receive a requst
我被搞糊涂了
unusedbits | Bits3 |Bits2 |Bits1 | Bits0我也看不懂到底是什么意思
可能是switch(status)
status=1 输出readey to receive a requst
我被搞糊涂了
调试欢乐多
此题中,如果
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
*/
所以修改一下,再发:
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*/