位運算的作用

2022-08-18 18:09:09 字數 1357 閱讀 6392

1. 按位與運算按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。

只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。

例如:9&5可寫算式如下: 00001001 (9的二進位制補碼)&00000101 (5的二進位制補碼) 00000001 (1的二進位制補碼)可見9&5=1。

按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進位制數為0000000011111111)。

應用:a. 清零特定位 (mask中特定位置0,其它位為1,s=s&mask)

b. 取某數中指定位 (mask中特定位置1,其它位為0,s=s&mask)

2. 按位或運算按位或運算子「|」是雙目運算子。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有乙個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例如:9|5可寫算式如下:

00001001|00000101

00001101 (十進位制為13)可見9|5=13

應用:常用來將源運算元某些位置1,其它位不變。 (mask中特定位置1,其它位為0 s=s|mask)

3. 按位異或運算按位異或運算子「^」是雙目運算子。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。

參與運算數仍以補碼出現,例如9^5可寫成算式如下:

00001001^00000101 00001100 (十進位制為12)

應用:a. 使特定位的值取反 (mask中特定位置1,其它位為0 s=s^mask)

b. 不引入第三變數,交換兩個變數的值 (設 a=a1,b=b1)

目標操作操作後狀態

a=a1^b1 a=a^b a=a1^b1,b=b1

b=a1^b1^b1 b=a^b a=a1^b1,b=a1

a=b1^a1^a1 a=a^b a=b1,b=a1

4. 求反運算

求反運算子~為單目運算子,具有右結合性。 其功能是對參與運算的數的各二進位按位求反。例如~9的運算為:

~(0000000000001001)結果為:1111111111110110

5. 左移運算

左移運算子「<<」是雙目運算子。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數, 高位丟棄,低位補0。 其值相當於乘2。

例如: a<<4 指把a的各二進位向左移動4位。如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。

6. 右移運算

右移運算子「>>」是雙目運算子。其功能是把「>> 」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。其值相當於除2。

位運算總結

1 位運算符號 取反,不分正負數 標準規定在右邊補0 正數則左邊補0,負數標準沒有規定在左邊補充的數字,分為邏輯右移和算術右移,具體由編譯器決定,windows平台和gcc採取算術右移即負數補1 2 常見的二進位制位的變換操作 下面列舉了一些常見的二進位制位的變換操作。下面列舉了一些常見的二進位制位...

Java位運算子詳解

按位與運算子 參加運算的兩個資料,按二進位制位進行 與 運算。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 即 兩位同時為 1 結果才為 1 否則為0 例如 3 5 即 0000 0011 0000 0101 0000 0001 因此,3 5的值得1。另,負數按補碼形式參加按位與運算。與...

定點補碼一位乘的運算方法

按乘數為正 負兩種情況討論 1.被乘數 x 補符號任意,乘數 y 補為正 設 x 補 y 補 根據補碼定義可推得 x 補 2 x 2n 1 x mod2 y 補 y 其中x,y為真值.故 x 補 y 補 2n 1 x y 2n 1 xy 21 2n 2 y1y2.yn xy 注意被2n乘已成為正整數...