語言 :
SWEWE 會員 :登錄 |註冊
搜索
百科社區 |百科問答 |提交問題 |詞彙知識 |上傳知識
上一頁 1 下一頁 選擇頁數

位運算

程序中的所有數在計算機內存中都是以二進制的形式儲存的。位運算說穿了,就是直接對整數在內存中的二進制位進行操作。比如,and運算本來是一個邏輯運算符,但整數與整數之間也可以進行and運算。舉個例子,6的二進制是110,11的二進制是1011,那麼6 and 11的結果就是2,它是二進制對應位進行邏輯運算的結果(0表示False,1表示True,空位都當0處理) 。簡介

110

AND 1011

---------------

0010 --> 2

有人會說,計算6 and 11沒有什麼實際意義啊。這一系列的文章就將告訴你,位運算到底可以乾什麼,有些什麼經典應用,以及如何用位運算優化你的程序。

運算符號

下面的a和b都是整數類型,則:

Pascal語言| C語言 | Java

------- ------------- ---------

a and b | a&b | a&b

a or b | a|b  | a|b

a xor b | a ^ b | a ^b

not a | ~a  | ~a

a shl b | a << b | a << b

a shr b | a >> b | a>>b 無符號右移

- | - | a>>> b 帶符號右移

注意C中的邏輯運算和位運算符號是不同的。 520|1314=1834,但520||1314=1,因為邏輯運算時520和1314都相當於True。同樣的,! a和~a也是有區別的。

運算說明

=== 1. and運算 ===

and運算通常用於二進制取位操作,例如一個數and 1的結果就是取二進制的最末位。這可以用來判斷一個整數的奇偶,二進制的最末位為0表示該數為偶數,最末位為1表示該數為奇數。

相同位的兩個數字都為1,則為1;若有一個不為1,則為0。

00111

11100

(&;或者and)

----------------

00100

=== 2. or運算 ===

or運算通常用於二進制特定位上的無條件賦值,例如一個數or 1的結果就是把二進制最末位強行變成1。如果需要把二進制最末位變成0,對這個數or 1之後再減一就可以了,其實際意義就是把這個數強行變成最接近的偶數。


上一頁 1 下一頁 選擇頁數
用戶 評論
還沒有評論
我要評論 [遊客 (35.175.*.*) | 登錄 ]

語言 :
| 校驗代碼 :


搜索

版权申明 | 隐私权政策 | 版權 @2018 世界百科知識