C語言的按位與 或 非 異或都什麼意思。有什麼用

2023-07-11 16:35:21 字數 2425 閱讀 1632

1樓:呼延又夏滿藏

位運算子有:&(按位與)、|按位或)、^按位異或)、~

按位取反)。

優先順序從高到低,依次為~、&

按位與運算有兩種典型用法,一是取一個位串資訊的某幾位,如以下**擷取x的最低7位:x

0177。二是讓某變數保留某幾位,其餘位置0,如以下**讓x只保留最低6位:x

x按位或運算的典型用法是將一個位串資訊的某幾位置為1。如將要獲得最右4位為1,其他位與變數j原來其他位保持相同,可用邏輯或運算017|j;

按位異或運算的典型用法是求一個位串資訊的某幾位資訊的反。如欲求整型變數j的最右4位資訊的反,用邏輯異或運算017^j,就能求得j最右4位的資訊的反,即原來為1的位,結果是0,原來為0的位,結果是1。

交換兩個值,不用臨時變數,假如a=3,b=4。想將a和b的值互換,可以用以下賦值語句實現:

a=a^b;

b=b^a;

a=a^b;

取反運算常用來生成與系統實現無關的常數。如要將變數x最低6位置成0,其餘位不變,可用**x

x~077實現。

2樓:縱宛筠成韋

這些是位操作運算子:參與運算的量,按二進位制位進行運算。

在計算機中,資料都是以二進位制數形式存放的,位運算就是指對儲存單元中二進位制位的運算。c語言提供6種位運算子。

包括位與(&)位或(|)位非(~)位異或(^)左移(《右移(>>六種。位運算子。

按優先順序從高到低排列的順序是:

位運算子中求反運算「~「優先順序最高,而左移和右移相同,居於第二,接下來的順序是按位與。

「按位異或。

「和按位或。

「順序為~擴充套件資料:例:設二進位制數a是00101101,若通過異或運算a∧b

使a的高4位取反,低4位不變,則二進位制數b是。

解析:異或運算常用來使特定位翻轉,只要使需翻轉的位與1進行異或操作就可以了,因為原數中值為1的位與1進行異或運算得0,原數中值為0的位與1進行異或運算結果得1。而與0進行異或的位將保持原值。

異或運算還可用來交換兩個值,不用臨時變數。如。int

a=3,b=4;,想將a與b的值互換,可用如下語句實現:

a=a∧b;

b=b∧a;

a=a∧b;

所以本題的答案為:

3樓:戊力行學珍

按位異或需要將異或雙方轉換成二進位制數,如當a=5時,二進位制為101,與0異或後結果為100,也就是b=4的二進位制了。

異或時的規則是:逐位進行比較,相同為0(即1與1異或為0,0與0異或為0),不同為1(即0與1異或為1,1與0異或為1)。

c語言中按位異或和按位取反什麼去區別?

4樓:操場的哥

先說一下布林值的與、或、異或、反運算:

與運算,兩者都為真計算結果為真,反之為假:

或運算,至少其一都為真計算結果為真,反之為假:

異或運算,兩者不同為真,反之為假:

取反運算,單目運算子:

以上例子 1 代表真,0 代表假。

按位運算就是將二進位制位的每一位進行如上計算。

如 2 | 5,轉換為二進位制(以 1 位元組 8 位為例):

00000010 | 00000101,每個二進位制位分別進行或運算後得:

00000111 即 7。雖然 7 = 5 + 2 但不代表 2 | 5 = 2 + 5。

如:2 | 6 = 6,5 | 6 = 7,2 | 4 | 5 | 6 | 7 = 7。

同理,按位與運算 2 & 5 的結果為 0:

按位與運算 2 & 6 的結果為 2(二進位制 00000010):

同樣也能算出 2 ^ 6 的結果為 4(二進位制 00000101):

取反運算 ~00000110 = 11111001。

當然,對一個數字進行取反運算結果是多少,還與該型別是有符號還是無符號,佔用的位元組大小等有關。上面的例子只是以一個位元組為例進行說明。

5樓:請叫我老王

^^異或運算抄,兩者不同為真,反之為假:

1 ^bai 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0;

取反du運算,zhi單目運算子:

dao1 = 0,~0 = 1;

6樓:輝藏愚霜

1、按位異或,是雙目運算子。

其運算規則為:相同時為0,不相同時為1。即:

2、接位取反是單目運算子。

其運算規則為:1變0,0變1.即:

c語言中同或、異或怎麼表示

7樓:

異或有專門的操作符^,比如int a,b,c,d;c=a^b;,則表示c是a與b異或的結果。c中雖然沒有同或操作符,但由邏輯關係知同或是異或的非,所以d=!(a^b);,那麼d就是a與b同或的結果。

c語言中異或操作求解答?急,C語言中異或操作求解答?急

按位異或就是在同一位置兩者相同結果位為0,不同則結果位為1如 11 10 01 為異或操作符11 01 111 101 10 10 000 011 結果 01 11 111 110 異或就是諸位比較,當都是1或0時結果為0,當一個為1一個為0時結果為1,比如1010異或1100結果為0110 inc...

C語言12按位取反的結果是什麼,c語言按位取反 ,看不明白輸出的結果!!!

1全部12預設是int型別,所以一般預設是00000000 00000000 00000000 00001100 所以按位取反之後就是11111111 11111111 11111111 11110011,這是一個負數的補碼儲存形式,第一位 也就是最左邊 的1是符號位,所以後面的1111111 11...

微控制器怎樣用C語言實現數字間的異或

你的意思是4個整數 按位對應 4個位全相同為0,有任意一個不同為1 的話版 可以寫成 a b 權 a c a d b c b d c d int a a 1234 2345 3456 4567 c語言異或操作 你是打算對數字進行異或,需要將字元變成數字,異或完後再變回字元我只簡單寫了一下,沒有異常處...