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語言異或操作 你是打算對數字進行異或,需要將字元變成數字,異或完後再變回字元我只簡單寫了一下,沒有異常處...