當前位置:首頁 » 編程語言 » c語言異或運算的原理
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言異或運算的原理

發布時間: 2023-08-27 23:54:52

㈠ 在c語言中異或的用法是什麼

異或是一個數學運算符。它應用於邏輯運算。

在【布爾值運算】中:真異或假的結果是真,假異或真的結果也是真,真異或真的結果是假,假異或假的結果是假。就是說兩個值不相同,則異或結果為真。反之,為假。

在【二進制值運算】中:不同為1,相同為0,如1001異或1010等於0011。
異或也叫半加運算,其運演算法則相當於不帶進位的二進制加法:二進制下用1表示真,0表示假,則異或的運演算法則為:0異或0=0,1異或0=1,0異或1=1,1異或1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進位。

㈡ C語言中位異或怎樣理解呢

先講下一位異或,假設a、b都是一位,那麼如果a <> b,結果就是1,否則就是0。

再來看按位異或。按位異或就是把兩個二進制數,按每一位分別進行異或運算。

例子:
01011100
XOR
00110101
=
01101001

每一位都是對應的。

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

1、概念:參加運算的兩個對象,按二進制位進行「與」運算,負數按補碼形式參加按位與運算。

2、運算規則:0&0=0; 0&1=0;1&0=0;1&1=1;即:兩位同時為「1」,結果才為「1」,否則為0【有0則0】

例如:3&5=1,即0000 0011 & 0000 0101 = 0000 0001

3、「與運算」特殊用途:

(1)清零。如果想將一個單元清零,即使其全部二進制位為0,只要與一個各位都為零的數值相與,結果為零。

(2)取一個數中指定位。找一個數,對應X要取的位,該數的對應位為1,其餘位為零,此數與X進行「與運算」可以得到X中的指定位。

例:設X=10101110,取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;還可用來取X的2、4、6位。

二、按位或(|)

1、概念:參加運算的兩個對象按二進制位進行「或」運算,負數按補碼形式參加按位與運算。

2、運算規則:0|0=0;0|1=1;1|0=1;1|1=1;即 :參加運算的兩個對象只要有一個為1,其值為1【有1則1】

例如:3|5=7,即 0000 0011 | 0000 0101 = 0000 0111

3、「或運算」特殊作用:

(1)常用來對一個數據的某些位置1。找到一個數,對應X要置1的位,該數的對應位為1,其餘位為零。此數與X相或可使X中的某些位置1。

例:將X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。

三、異或運算(^)

1、概念:參加運算的兩個數據,按二進制位進行「異或」運算

2、運算規則:0^0=0;0^1=1;1^0=1;1^1=0;即:參加運算的兩個對象,如果兩個相應位為「異」(值不同),則該位結果為1,否則為0【同0異1】

例如:3^5=6,即0000 0011^0000 0101 = 0000 0110

3、「異或運算」特殊作用:

(1)使特定位翻轉 找一個數,對應X要翻轉的各位,該數的對應位為1,其餘位為零,此數與X對應位異或即可。

(2)與0相異或,保留原值 ,X ^ 0000 0000 = 1010 1110。

例:X=10101110,使X低4位翻轉,用X ^ 0000 1111 = 1010 0001即可得到。

(3)基於異或運算,不引用新變數交換兩個變數的值

a = a ^ b; b = a ^ b; a = a ^ b;

【同樣基於加減法的話有:a = a + b; b = a - b; a = a -b;】

四、不同長度的數據進行位運算

如果兩個不同長度的數據進行位運算時,系統會將二者按右端對齊,然後進行位運算。

以「與」運算為例說明如下:我們知道在C語言中long型佔4個位元組,int型佔2個位元組,如果一個long型數據與一個int型數據進行「與」運算,右端對齊後,左邊不足的位依下面三種情況補足,

(1)如果整型數據為正數,左邊補16個0。

(2)如果整型數據為負數,左邊補16個1。

(3)如果整形數據為無符號數,左邊也補16個0。

如:long a=123;int b=1;計算a & b。

如:long a=123;int b=-1;計算a & b。

如:long a=123;unsigned int b=1;計算a & b。

㈣ c語言中位運算有那幾種原理分別是什麼

位與、位或、異或、取反、左移、右移等6種,位運算要求必須使用補碼形式計算。
位與:對應的二進制位上只要出現1個0,則當前位使用位與後的結果為0
位或:對應的二進制位上只要出現1個1,則當前位使用位與後的結果為另一個二進制位的值
異或:對應的二進制位相同,則異或結果為0,否則異或結果為1
取反:包括符號位在內,二進制位0變1,1變0
左移:右側補0,右移整數左側補0,負數左側補1

㈤ 請幫我講解一下C語言中的異或運算

首先,我們看一下異或的原理:
a = 3 ^ 5;
3的二進制是0011,5的二進制是0101。異或發現兩者的不同之處,所以a最終為0110b(4)。
了解了異或的基本原理後,接下來看上述的代碼。
a^=b;
這一句使得a被賦值為「數值a」與「數值b」的「差異值」。
然後:b^=a;
這一句用異或利用「差異值」來還原a的數值,並賦值給b。此時b等於a先前的數值。
最後一句:a^=b;
因為a仍然保存著「差異值」,這一句通過異或使得b的初始值被還原,並賦值給a。
。。。。。
這樣,異或就將a與b的數值「巧妙」地交換了……
我也是網路的,和樓主一起學習…………

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

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

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

包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。

位運算符 & |~<< >> ∧ 按優先順序從高到低排列的順序是:

位運算符粗皮中求反運算「~「優先順序最高,而左移和右移相同,居於第二,接下來的順序是按位與 「&「、按位異或 「∧「和按位或 「|「。順序為~ << >> & ∧ | 。

(6)c語言異或運算的原理擴展閱讀:

例:設二進睜凳寬制數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;

所以本題的答案為: 11110000 。