運算
public class Test{
public static void main(String args[])
{
int n = ~(0x2f)&0x36;
System.out.println(n);
}
}
今天在複習面試的題目無意間看到這題並做下記錄以便後面1、按位運算符就是直接對整數在內存中的二進制位進行操作運算。比如,&&運算本來是一個邏輯運算符,但整數與整數之間可以用&進行運算。舉個例子,6的二進制是110,11的二進制是1011,那麼6 & 11的結果就是2,它是二進制對應位進行邏輯運算的結果(0表示False,1表示True,空位都當0處理)。
2、C語言提供了六種按
位運算符:
& 按位與
| 按位或
^ 按位異或
~ 取反
<< 左移
>> 右移
以0x開頭的是十六進制(十六進制中:a-f依次表示10-15),0x2f就是十六進制2f,即十進制47,0x36就是十進制的54
0開頭的就是八進制
然後他們的二進制分別爲0x2f 101111
0x36 110110
題目中~(0x2f)所以要先算裏面的而~就是要把二進制取反,也就是把0變成1,1變成0
~(0x2f) 010000
& 0x36 110110
------------------------
010000
也就是十進制的16
最後n輸出的結果是16。