~(0x2f)&0x36

運算

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。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章