c語言的異或運算,C語言的異或運算

2021-03-27 08:25:46 字數 6229 閱讀 6802

1樓:匿名使用者

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

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

在【二進位制值運算】中:不同為1,相同為0,如1001異或1010等於0011。

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

2樓:匿名使用者

機內碼(補碼):

23: 00000000,000101112: 00000000,000000105: 00000000,00000101異或優先順序高,先算異或,再算位或

2^5,2與5異或,異或的法則是相同的為0,不同的為1,由上面的二進位制很明顯結果為:00000000,00000111

再算位或,23與此結果求或,很顯然仍然為:00000000,00010111 即結果是23。

3樓:匿名使用者

23 先算^,後算|

有優先順序別的.

c語言裡的按位異或運算子

4樓:靠名真tm難起

按位異或,其操作符為^,形式為

a^b計算時,根據運算元a和b每位的值,計算結果,當a,b的對應位上值相同時,結果的該位上值為0,否則值為1。

如char a = 0x12, b = 0x34;

a^b= 0x12 ^ 0x34

= b0001 0010 ^ b0011 0100= b0010 0110

=0x26

5樓:夜微空

(|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

6樓:匿名使用者

1:「按位與」運算子(&)用法是如果兩個相應的二進位制位都為1,則該位的結果值為1否則為0。0&0=0,1&0=0,1&1=1

2:「按位或」運算子(|)用法是如果兩個相應的二進位制位有一個為1,則該位的結果值為1否則為0。0&0=0,1&0=0,1&1=1

0,1&0=1,1&1=1

3:「異或」運算子(^)用法是如果兩個相應的二進位制位為同號,則該位的結果值為1否則為0。0&0=1,1&0=0,1&1=1

7樓:通訊工程

以下的 答案中異或,解釋錯誤,相同為0,不同為1

8樓:無殼螃蟹

c語言中^為按位異或運算子,若兩個二進位制位相同,則結果為0,不同為1#include "stdio.h"

main()

函式輸出結果為12

將6和10分別轉換為2進位制數為0110(前邊補了個0)和1010。然後按照定義進行異或運算

0110 a

1010 b

1100 a和b最左邊第一位和第二位不相同,所以分別為1,第三位和第四位相同,所以分別為0

二進位制數1100轉換為10進位制數,結果是12。

9樓:小豬叄兒

a b a xor b

true true false //最大特點在這裡,1 xor 1 = 0

true false true

false true true

false false false

對於電路設計啊什麼的非常實用,平常用的很少。

10樓:程式設計師的每一天

c語言經典例子之使用按位異或運算子

11樓:尺蠖丨蚩

相同取0,不同取1.二目運算

12樓:神一樣的魁苝

|& 按位與

| 按位或

^ 按位異或

1. 按位與運算 按位與運算子"&"是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。

只有對應的兩個二進位均為1時,結果位才為1 ,否則為0。參與運算的數以補碼方式出現。

例如:9&5可寫算式如下: 00001001 (9的二進位制補碼)&00000101 (5的二進位制補碼) 00000001 (1的二進位制補碼)可見9&5=1。

按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 運算 ( 255 的二進位制數為0000000011111111)。

main()

2. 按位或運算 按位或運算子「|」是雙目運算子。其功能是參與運算的兩數各對應的二進位相或。只要對應的二個二進位有一個為1時,結果位就為1。參與運算的兩個數均以補碼出現。

例如:9|5可寫算式如下: 00001001|00000101

00001101 (十進位制為13)可見9|5=13

main()

3. 按位異或運算 按位異或運算子「^」是雙目運算子。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。

參與運算數仍以補碼出現,例如9^5可寫成算式如下: 00001001^00000101 00001100 (十進位制為12)

main()

c語言 異或運算

13樓:匿名使用者

#include

#include

#include

int main()

printf("請輸入金鑰,並牢記,解密時要再次輸入:");//只要再對加密的檔案再進行一次異或運算就得到原始檔

n=getch();

printf("*\n");

while(1)

fclose(p1);

fclose(p2);

return 0;}

14樓:杭嘉澍鄔鑫

上式相當於b^=a;a^=b;因此,a=b=233。相當於,a^b^a,得到b原來的值。

c語言 異或 運算子的使用

15樓:千鋒教育

異或的意思就是相異為真。。

現在問題主要是出現在這一句。。

b[--i]=a[j]^a[--j];

注意啦。。編譯器編譯的時候是從後向前的。。也就是先算a[--j],這樣j就先自減了。。j從3變為2。。然後再算a[j],因為j是2,呼叫的時候,就是調a[2]

所以整個語句第一次執行的時候就是b[2]=a[2]^a[2],結果顯然是0;

所以輸出的是1100

16樓:雨夜

#include

void main()

直接用異或符號^,得到的是數字9,因為設定輸出是%d

17樓:匿名使用者

^異或運算相當於不進位的加法運算,就是相同的變0,不同的變1,舉個例子

1 0 1 1 1 1 0 0

^ 0 1 1 0 1 0 0 1= 1 1 0 1 0 1 0 1

18樓:一生有你乀

異或也叫半加運算,其運演算法則相當於不帶進位的二進位制加法:二進位制下用1表示真,0表示假,則異或的運演算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=0(同為0,異為1),這些法則與加法是相同的,只是不帶進位。

異或略稱為xor、eor、ex-or

程式中有三種演運算元:xor、xor、⊕。

使用方法如下

z = x ⊕ y

z = x xor y

c語言,怎麼打 異或 運算子

19樓:匿名使用者

c語言的異或操作是位操作的一種,其運算子號為^。

要打出這個符號,需要在英文輸入法下,輸入shift + 6即 1 按下shift, 左右均可;

2 按6, 即按下,抬起;

3 抬起shift。

異或操作是按位操作,當兩個運算元同一位上值相同時(同為1或同為0),結果對應位上的值為0;否則值為1。

20樓:匿名使用者

回車鍵的上面有一個"\"鍵。你按"shift 鍵+\ 鍵"就出來"||"了,這些全是組合鍵,要按出這些字元來,都要按shift鍵

21樓:匿名使用者

樓上說的是|或運算子

異或是^ shift+6,不是小鍵盤上的6,是f5下面的6

22樓:凡凡渣渣

你說的是o內的x合成的符號嗎?

23樓:匿名使用者

邏輯異或不就^麼

shift+6

24樓:匿名使用者

異或是^ shift+6

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

25樓:匿名使用者

這是為運算子,變數做運算時要以二進位制進行運算例如:a=5,b=6;我以四個二進位制位來表示這兩個變數(當然在c 的編譯環境下,一般用16或者是32個二進位制位來表示)a:0101 b:

0110

異或的原理是相同為 0 不同為1;所以 a1=a^b 的結果為0011;b=b^a;的結果為0101;a=a^b;的結果為0110 達到了a 和b 交換的目的。

c語言中1^8怎麼算?^是按位異或運算子

26樓:匿名使用者

1和8都是int型,且都是正整數,記憶體中原碼形式儲存

1的原碼是00000000 00000000 00000000 0000001

8的原碼是00000000 00000000 00000000 0001000

按位異或,顧名思義是對應的二進位制位計算,口訣相同0,相異為1.就是對應的二進位制位,相同的話該二進位制位計算出來是0,不同的話計算出來才是1

舉例:0

^ 0-----

0***************1^1

---------

0************0^1

------------

1**************************************

所以00000000 00000000 00000000 0000001

^00000000 00000000 00000000 0001000

00000000 00000000 00000000 0001001

這個二進位制數按照原碼解釋,對應9

所以結果是9

27樓:匿名使用者

先把十進位制的1和8轉換成二進位制,然後進行位運算之後再把結果轉換成十進位制就ok了。

1 : 0000 0001

^8 :0000 1000

=0000 1001 也就是十進位制的 8 + 1 = 9

c語言裡異或運算子運算不同位數的數字怎麼辦

28樓:匿名使用者

你的問題c語言會通過隱式型別轉換來完成,無需專門**,也無需你來操心如果我沒理解錯你的問題,你是說類似於32位int與64位long型的異或運算嗎

c語言中會隱式的把int自動擴充套件成long型,然後進行異或運算比如int a =10

long b = 20l;

long c = a ^ b; // a自動擴充套件為long型具體轉換優先順序,可以參考任意一本c語言基礎教程的「型別轉換」一節

c語言裡異或運算是哪個符號?要包含什麼標頭檔案麼

29樓:匿名使用者

c語言中的異或符號是:^ ,輸入方式是****f +6,它是一個內部運算子,不用包含任何檔案。

異或是一個位運算子,它的主要功能如下:

1.與1異或,可以使特定位翻轉;

2.與0異或,保留其值;

3.交換兩值,不使用臨時變數。**:a=a^b;b=b^a;a=a^b。

30樓:匿名使用者

異或是: ^

在數字鍵6上面。

不用調標頭檔案的。

31樓:匿名使用者

與:&&

或:||

運用這兩個運算子不需要包含標頭檔案名

數電中如何把a異或b異或c轉化為與非表示式

先列真值表,讓f a異或b異或c。可知當abc為001,010,100,111時f為1,然後畫卡諾圖,四個1都不相鄰,得 f a bc a b c ab c abc,a 就是a非的意思 然後對f兩次取反,就得到 f a bc a b c ab c abc 這就是與非表示式了。a異或b轉換成與非門是什...

c語言中,運算順序是 算數運算 關係運算 邏輯運算 賦值運算嗎?為什麼070不算算數運算

首先,你確來認你的 運算子正自確使用了 bai麼?常量不可以 du 運算的 其次zhi,你要注意 在前和dao 在後的區別,在前的時候是先算這個 運算,然後取所有 運算的值並計算表示式,在後的時候正好相反,要先取所有 運算的值並計算表示式,然後才進行 運算,比如說 a b 要先算 b 前提是a的值非...

c語言位運算的問題,C語言中的位運算有什麼優點?

的優先順序比 高,的優先順序也比 高,所以k i j 3 實為k i 專 j 3 屬i 013 00000000 00001011 0打頭的是八進位制 所以 i 11111111 11110100 j 0x13 00000000 00010011,j 3 00000000 00010011 3 00...