On the basis of output both(&& with &) are same.
A B && &
-----------
0 0 0 0
0 1 0 0
1 0 0 0
1 1 1 1
suppose
e1 (&& or &) e2
if we use bitwise & operator then it will evaluate both e1 and e2 after that it will apply & operator.
but using the logical && operator if e1 evaluate false it will no evaluate e2 again it will return false directly. Only the true condition of e1 it will evaluate e2.
Suppose any exception occurred in e2(e2=1/0) and e1 return false.
In this scenario
if we apply bitwise & operator then it will throw exception since the second part also be evaluated.
for the logical && operation it will be execute fine.