2014-11-06 54 views
0

檢查位值應該很容易,但它不工作。在logcat中所示的二進制值字節檢查位不工作

這是工作,只是停止了......

//test is byte received 
//test = 3F binary: 00111111  
boolean b1,b2,b3,b4,b5,b6,b7,b8; 

     b1 = (test & 1) !=0; 
     b2 = (test & 2) !=0; 
     b3 = (test & 4) !=0; 
     b4 = (test & 8) !=0; 
     b5 = (test & 16) !=0; 
     b6 = (test & 32) !=0; 
     b7 = (test & 64) !=0; 
     b8 = (test & 128) !=0; 

logcat的

11-06 10:58:58.455: D/Right panel(23660): 1  2  3  4  5  6  7  8 
11-06 10:58:58.455: D/Right panel(23660): false false false false false false false false 
11-06 10:58:58.455: D/Right panel(23660): Data from handler: 003F binary1: 00111111 
+0

的是什麼樣的logcat應該說明了什麼? – m0skit0 2014-11-06 09:09:36

+1

1.什麼是測試值? 2.移位應該是0,1,2 ......位掩碼應該是1,2,4,8 ......不要把它們弄髒。 – 2014-11-06 09:11:46

+0

測試是字節(二進制00111111)。 – Martynas 2014-11-06 09:19:02

回答

0

想這就是你想要什麼:

public static void main(String[] arg) 
{ 
     boolean b[]=new boolean[9]; 
     int test=0x01f; 

     b[1] = (test & 1) !=0;//(test & 1) !=0; 
     b[2] = (test & 2) !=0; 
     b[3] = (test & 4) !=0; 
     b[4] = (test & 8) !=0; 
     b[5] = (test & 16) !=0; 
     b[6] = (test & 32) !=0; 
     b[7] = (test & 64) !=0; 
     b[8] = (test & 128) != 0; 
     for(int i=1;i<=8;i++) 
     { 
     System.out.print(b[i]+" "); 
     } 
     System.out.println("\n"); 
    return; 
} 

與輸出,當測試是爲0x1F:

true true true true true false false false 
+0

不過falses ...什麼有趣的是,這是工作,繁榮 – Martynas 2014-11-06 09:25:43

+0

嘗試,如果最小功能演示上面你的「的javac/java的」命令工作。如果它的劑量,我建議你檢查你的代碼框中的其他部分 – Chiron 2014-11-06 09:29:52

+0

幾次嘗試後,它再次開始工作。 – Martynas 2014-11-06 11:11:10