這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
http://blog.guoqiangti.com/?p=538
以前很少對二進位進行操作,在看effective go的時候,好像沒有看到關於二進位操作符的說明.今天在看其他源碼的時候,看到一些二進位操作符,不知道他的意思,所以就查查資料,溫習一下.
- 按位或 |
.| (按位或):【解義】對兩個整數的二進位形式逐位進行邏輯或運算,原理為:1|0=1,0|0=0,1|1=1,0|1=1
等。
4|-5:
4的二進位形式為:00000000 00000000 00000000 00000100,
-5的二進位形式為:11111111 11111111 11111111 11111011,
逐位進行邏輯或運算:11111111 11111111 11111111 11111111,即得到-1.
2. &(按位與)
【解義】對兩個整數的二進位形式逐位進行邏輯與 運算,原理:1|0=0,0|0=0,1&1=1;0&1=0等。
4&-5:
4的二進位形式為:00000000 00000000 00000000 00000100,
-5的二進位形式為:11111111 11111111 11111111 11111011,
逐位進行邏輯與運算:00000000 00000000 00000000 00000000,即得到0.
實際應用:可以把位元組轉換為整 數,-64&0xFF=192,也可以用八進位的形式,-64&0377=192、
其實0xFF和0377都表示的是整數255、
3.^(按 位異或)
【解義】對兩個整數的二進位形式逐位進行邏輯異或運算,原理:1^1=0,1^0=1,0^1=1,0^0=0.
4^-5:
4的二進位形式為:00000000 00000000 00000000 00000100,
-5的二進位形式為:11111111 11111111 11111111 11111011,
逐位進行邏輯異或運算:11111111 11111111 11111111 11111111,即得到-1.
實際應用:按位異或可以比較兩個數字是否相等,它利用 1^1=0,0^0=0的原理。 20^20==0