二進位制運算基礎

2021-08-26 18:11:16 字數 866 閱讀 4061

1、十六進製制的表示

例子: 0xaa | 0x55。

將十六進製制表示進行二進位制運算,首先要把十六進製制表示成二進位制。規則是,兩個十六進製制位等於乙個位元組(8個二進位制位),其實就是乙個十六進製制位佔4個二進位制位。

對於0xaa中的a為十進位制中的10,用二進位制表示就是1010,所以0xaa用二進位制表示就是10101010.同理對於十六進製制的5,也就是十進位制的5,用二進位制表示就是0101,所以0x55用二進位制表示就是01010101.

那麼0xaa | 0x55 = 11111111.

2、將乙個十進位制正數轉化為乙個二進位制數表示。

3、負數左移

例子:-2 >> 1。

首先將負數的二進位制表示寫出:首先寫出絕對值的二進位制表示,然後取反+1.對於-2.絕對值為|-2| = 2,用二進位制表示就是10,取反則為 1111..1101,再加1,則變成1111…1110.

對於有符號左移,直接移動,在高位補1,低位直接捨棄。則:1111…1111.

再將這個二進位制結果轉化成為十進位制表示:除符號位以外,減一取反,則變為0000…0001.結果為它的絕對值 1.所以最後的結果為-1.

ps:位移操作只針對 int 和 long,對於 byte short char 需要先轉化為 int,再進行位移操作。

4、無符號位移

例子:-2 >>> 1 。

無符號右移的特點就是,無論是正數還是負數,都是右邊位捨棄,左邊位補0.

上一題中-2的表示方式是1111…1110,無符號右移,則:0111…1111 = 2^31-1

注意到:有符號位移和無符號位移的區別,就是高位補0還是補1.所以沒有無符號左移<<<.

二進位制運算基礎

位運算實質是將參與運算的數字轉換為二進位制,而後逐位對應進行運算。按位與運算為 兩位全為1,結果為1,即1 1 1,1 0 0,0 1 0,0 0 0。例如51 5 00110011 00000101 00000001 51 5 1 特殊用法 1 與0相與可清零。2 與1相與可保留原值,可從乙個數中...

二進位制運算基礎

位運算實質是將參與運算的數字轉換為二進位制,而後逐位對應進行運算。按位與運算為 兩位全為1,結果為1,即1 1 1,1 0 0,0 1 0,0 0 0。例如51 5 00110011 00000101 00000001 51 5 1 特殊用法 1 與0相與可清零。2 與1相與可保留原值,可從乙個數中...

二進位制運算

運算子 符號含義例子與 兩邊都為真時為真 1 1 1或 任何一邊為真時為真1 非取反 如果1則為0 如果0為1 1 0 異或 兩邊相同為1 兩邊不同為0 1 1返回false 1 2返回true 運算子符號含義 例子邏輯與 判斷兩邊 都為真時為真 true true true或 判斷兩邊 任何一邊為...