c語言位異或
1. c語言 按位兩次異或是什麼意思
按位兩次異或是「a^=b;b^=a;」這早薯告樣嗎,如果是的話,那麼
對無符號整數而言等價於如下語句:
temp=a;a^=b;b=temp;
意義在於,少用一個陸明變數,節省空間
//PS: 按位計算對於計算機語言而言大同小異,我偷了個手腔懶用了javascript來寫
2. C語言里的按位異或運算符
1:「按位與彎銷」運算符(&)全1為1,有0則0。拿鬧蔽0&0=0,1&0=0,1&1=1
2:「按消州位或」運算符(|)有1則1,全0則0。0|0=0,1|0=1,
1|1=1
3:「異或」運算符(^)相同為0,不同為1。0^0=0,1^0=1,1^1=0
3. c語言按位異或什麼意思
按位異或,其操作符為^,形式為
a^b
計算時,根據操作數a和b每位的值,計算結果,當a,b的對應位上值相同時,結果的該位上值為0,否則值為1。
如
char a = 0x12, b = 0x34;
a^b
= 0x12 ^ 0x34
= B0001 0010 ^ B0011 0100
= B0010 0110
=0x26
4. C語言中位異或怎樣理解呢
先講下一位異或帆睜圓,假設a、b都是一位,那麼如果a <> b,結果就是態塌1,否則就是0。
再來看按位異或。按位異或就是把兩個二進制數,早緩按每一位分別進行異或運算。
例子:
01011100
XOR
00110101
=
01101001
每一位都是對應的。
5. 在c語言中異或的用法是什麼
異或是一個數學運算符。它應用於邏輯運算。
在【布爾值運算】中:真異或假的結果是真,假異或真的結果也是真,洞亮判真異或真的結果是假,假異或假的結果是假。就是說兩個值不相同,則異或結果為真。反之,為納改假。
在【二進制值運算】中:不同為1,相同為0,如1001異或1010等於0011。
異或也叫半加運算,其運演算法則相當於不帶進位的二進制加法:二進制下用1表示真,0表示假,則異或的運演算法則為:0異或0=0,1異或0=1,0異或1=1,1異或1=0(同為0,異為1),這些法則與加法是相同的,只是不帶鍵握進位。
6. c語言異或操作
C語言的異或操作是位操作的一種,其運算符號為^。
要打出這吵嫌個符號,需要在英文輸入法下,輸入shift + 6
即
1 按下shift, 左右均可;
2 按6, 即按下,抬起;
3 抬起shift。
異或操作是按位操作,當兩個操作數同一位上值辯碰歲相同時(同為攜睜1或同為0),結果對應位上的值為0;否則值為1。
7. C語言里的按位異或運算符
異或運算符∧也稱XOR運算符,它的作用是判斷參加運算的兩個二進制位是否為同號,若同號則結果為0;異號則為1。即0異或0=0,1異或0=1,1異或1=0。
應用:
1、使特定位翻轉。假設有01111010,想余消飢使其低4位翻轉。可以將它與0000111進行異或運算,結果為01110101。
2、與0異或,保留原值。如012異或00=012.
3、交換兩個值,不用臨時變數。假如a=3,b=4。想將a和b的值互換,可以用以下賦值語句實現:
a=a異或b;
b=b異或a;
a=a異或b;
8. 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。
9. c語言異或操作
c語言異或加密實現的原理為,將任意值,與相納寬做同值兩次異或後,結果與原值相同。所以可以通過將源數據與一個固定的值(秘鑰key)異或後,得到密文,然後將密文再次與秘鑰異或,得到原文。這樣就實現了異或加密及解密。
c語言中的異或是一種按位操作的計算,其計算原理為,操作數對應位上的值相同,則結果位上值為0,否則為1.異或的運算符號為^,於是真值表如下:
0^0=0
0^1=1
1^0=1
1^1=0
這樣區分源數據和秘鑰值,有如下四種可能:
0^0=0
0^0=0
0^1=1
1^1=0
1^0=1
1^0=1
1^1=0
0^1=1
以上巧啟是將一個值,用另一個值連續異或兩次後的計算過洞衡程,可以看到,最終的值與原始值是相同的。這就是異或加密的基礎原理。