C語言 位運算

2021-09-24 05:22:43 字數 3095 閱讀 1962

總結一下,自己腦子短路時可以檢視一下。

邏輯運算子:

&:位 『與』 ;

^: 位 『異或』

|: 位 『或』

~: 位 『非』,取反

移位運算子:

<<: 左移

>>: 右移

邏輯位運算都是以 (bit)為單位。

位取反的操作符為「~」,0變成1,1變成0,需要注意的是,位取反運算並不會改變運算元的值,它只是再記憶體中進行的。如果想要改變需要重新賦值。

#include#includevoid main()

#include#include/*

取反操作,

不管是 8 位 16位 清除最後一位(末尾清零)

& ~1 通用

*/void main(void)

位與運算的操作符為&,1 & 1=1 1 & 0=0 0 & 1=0 0 & 0=0

#include#includevoid main()

輸出:

與0相與都是0 ,可以實現按位清零

//實現安位清零 二進位制位與0相與執行清零動作

void main()

在c#中 & 操作預設返回 int 型別。要取分有符號和無符號 int 型別。

無符號為:uint 型別 資料範圍

0 – 4294967295

最大16進製制標識為:0xffff ffff

二進位制:1111 1111 1111 1111 1111 1111 1111 1111

有符號為:int 型別 資料範圍

-2147483648 – 2147483647

最大16進製制標識為 0x7fff ffff

二進位制:0111 1111 1111 1111 1111 1111 1111 1111 (最前面為符號位 0正數,1負數)

與1相與 值不變獲取指定位:

//獲取指定位 二進位制位與1相與保持某些位不變。

位或運算的操作符為|,將對兩個運算元的每一位進行或運算,位「或」運算的準則如下:

//或運算 :與1相或 都變成1 ;1|1=1 1|0=1

//與0相或 結果不變 0|1=1 0|0=0

位異或運算的操作符為^,將對兩個運算元的每一位進行異或運算。通俗地講,如果位「異或」運算的兩個位相同(同為0或同為1),結果為0,若兩個位不同(乙個為0,另乙個為1),結果為1,對應的準則為:

1 ^ 1=0 1 ^ 0=1 0 ^ 1=1 0 ^ 0=0 (相同為 0 ;不同為 1)

#include#include//異或運算 : 1^1=0 ; 0^0=0 ; 1^0=1 ; 0^1=1  (相同為0 不同為1)

實現反**異或可以實現反轉 :與1相異或 1^1=0 ,0 ^ 1 =1 。無論是0 或 1 與1相異或都會發生逆轉

//異或可以實現反轉 :與1相異或  1^1=0 0^1=1

//無論是0 或 1 與1相異或都會發生逆轉

//指定位反轉

//與0相異或保持不變 :0^0=0 0^1=1 無論是 1或0 與0發生相異或都不會變化

//異或實現交換兩個變數

左移 <<

右移 >>

//左移注意資料溢位

void main()

void main()

c語言位運算

c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0 按位或 兩個相應的二進位制位中只要有乙個為1,該位的結果值為1 按位異或 若參加運算的兩個二進位制位值相同則為0,否則為1 取反 是一元運算子,用來對乙個二進位制數按位取反,即將0變1...

C語言位運算

c語言位運算 位運算應用口訣 清零取反要用與,某位置一可用或 若要取反和交換,輕輕鬆鬆用異或 移位運算 1 它們都是雙目運算子,兩個運算分量都是整形,結果也是整形。2 am p 3 amp amp amp qu ot 右 移 右邊 的位被擠 掉。對於 左邊移出 的空位,如果是正 數則空位 補0,若 ...

C語言位運算

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作 運算子。這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。c語言提供的位運算子列表 運算子 含義 描述 按位與 如果兩個相應的二進位制位都為1,則該位...