2015-04-28 63 views

回答

2

這裏的&是按位&bitwise AND)。它執行AND操作(AND gate)。

這是一個真值表與門

+----------+-----------+-------------+ 
|  X |  Y  | X & Y | 
+----------+-----------+-------------+ 
|  0 |  0  |  0  | 
|  0 |  1  |  0  | 
|  1 |  0  |  0  | 
|  1 |  1  |  1  | 
+----------+-----------+-------------+ 

現在,按位取&在任一側上的每個兩個數的二進制和執行與每個的它的對應的比特。例如

0011 0110     // 54 
& 0001 0001     // 17 
--------------- 
    0001 0000     // 16 

所以,你的病情(if (a & b))要滿足的一個例子是

a = 3; 
b = 1; 

所以

0000 0011  // 3 
& 0000 0001  // 1 
------------ 
    0000 0001  // 1 

爲1,即true

失敗的唯一條件是當ab的所有相應位不相同或它們爲零時。

例如,對於

a=3; 
b=4; 

所以

0000 0011   // 3 
& 0000 0100   // 0 
---------------- 
    0000 0000   // 0 

這是0,因此false,並且每當結果是假,if語句不執行。

因此,對於除0之外的a & b的任何值,如果條件被執行。

0

一個例子應當澄清:

a =0b 1111 0000 
b =0b 0001 0001 
a&b=0b 0001 0000 

只有當第n位是在a和b將在& b第n個比特給1 1。如果值a & b不等於0,則if語句將成爲truthy。