c語言異或操作,在c語言中異或的用法是什麼?

時間 2021-08-14 08:57:47

1樓:慕佑平虞娟

你是打算對數字進行異或,需要將字元變成數字,異或完後再變回字元我只簡單寫了一下,沒有異常處理,順便說你b中f少了一個#include

intctoi(char

c)char

itoc(int

i)int

main()

printf("%s\n",c);

return0;}

2樓:殳振華懷霜

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

以上是將一個值,用另一個值連續異或兩次後的計算過程,可以看到,最終的值與原始值是相同的。這就是異或加密的基礎原理。

c語言異或操作

3樓:匿名使用者

你是打算對數字進行異或,需要將字元變成數字,異或完後再變回字元我只簡單寫了一下,沒有異常處理,順便說你b中f少了一個#include

int ctoi(char c)

char itoc(int i)

int main()

printf("%s\n",c);

return 0;}

4樓:星月小木木

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

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

2 按6, 即按下,抬起;

3 抬起shift。

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

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

5樓:

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

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

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

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

求在c語言中異或的用法,也就這個“^"符號,謝謝

6樓:

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

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

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

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

7樓:匿名使用者

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

2.與0異或,保留其值

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

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

8樓:匿名使用者

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

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

2 按6, 即按下,抬起;

3 抬起shift。

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

9樓:匿名使用者

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

10樓:匿名使用者

樓上說的是|或運算子

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

11樓:凡凡渣渣

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

12樓:匿名使用者

邏輯異或不就^麼

shift+6

13樓:匿名使用者

異或是^ shift+6

c語言 異或運算

14樓:匿名使用者

#include

#include

#include

int main()

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

n=getch();

printf("*\n");

while(1)

fclose(p1);

fclose(p2);

return 0;}

15樓:杭嘉澍鄔鑫

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

c語言按位異或

16樓:雷特生杰特猛

以上**其實實現的是a和b不借助第三個變數來交換之間的值;b=a^b^b不等於b=a^0;因計算是從左往右的順序,如果a=a^b,那麼b=a^b^b等於b=a^b; a=a^b^b^a^b也同樣理解

17樓:

^不知道你在問什麼問題!整型數a^0還是整型數a。^是左-->右結合的,0^b^0就是(0^b)^0,所以結果還是b。

b=a^b^b和a=a^b^b^a^b不知=是賦值還是==,要是賦值,前者的結果是b的值為a,後者的結果是a的值是b;要是等式,即是==,那顯然是錯誤的,應該是a=a^b^b和b=a^b^b^a^b才對。

18樓:匿名使用者

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

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

19樓:源玉巧茅煙

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

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

如chara=

0x12,b=

0x34;

a^b=

0x12

^0x34

=b0001

0010

^b0011

0100

=b0010

0110

=0x26

c語言 異或 運算子的使用

20樓:匿名使用者

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

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

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

有什麼地方解釋不清的可以再問我。。嘿嘿。。

21樓:匿名使用者

奇了 這句始終輸出的是 0printf("%d",a[j]^a[--j]);但是用printf("%d",a[3]^a[2]);卻能輸出 1 想不通。。。。。繼續研究

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

22樓:東弘肖琭

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

23樓:棟黎胥美

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

24樓:洛德業劇溫

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

"stdio.h"

main()

函式輸出結果為12

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

0110

a1010

b1100

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

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

25樓:以元魁袁璠

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

26樓:欒霏闕念寒

異或運算子∧也稱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;

c語言位運算子:與、或、異或、取反、左移和右移

位運算是指按二進位制進行的運算。在系統軟體中,常常需要處理二進位制位的問題。c語言提供了6個位操作運算子。

這些運算子只能用於整型運算元,即只能用於帶符號或無符號的char,short,int與long型別。

&按位與

如果兩個相應的二進位制位都為1,則該位的結果值為1,否則為0

|按位或

兩個相應的二進位制位中只要有一個為1,該位的結果值為1

^按位異或

若參加運算的兩個二進位制位值相同則為0,否則為1~取反

~是一元運算子,用來對一個二進位制數按位取反,即將0變1,將1變0

<<左移用來將一個數的各二進位制位全部左移n位,右補0

>>右移將一個數的各二進位制位右移n位,移到右端的低位被捨棄,對於無符號數,高位補0

c語言voidmain在很多c語言中main前沒有為什

天河流紋石 c99規範要求main函式返回值必須是 int。但有些編譯器允許非標準的寫法,而且有一大批程式設計師不這樣寫。在應用角度來看,問題不大。但在原始碼規範上看,建議最好寫上。這就好比生活中,人們的口語總是有語病的。比如 你走先。這麼說,別人能聽懂 但要規範的話,還是要遵循語法。說成 你先走。...

在c語言中如何實現函式,在c語言中如何實現函式模板

go陌小潔 各種用 c 語言實現的模板可能在使用形式上有所不同。現以一個求和函式 sum 為例,用 c template 可寫如下 template r sum const t array,int n 如果不是內建型別,該模板隱式地需要 有r r operator t 運算子可用。1.使用函式指標作...

c 語言中n的意思是什麼,在c 語言中while(n 的意義是什麼?怎麼用?

n 不是換行,換行是 n,轉義字元是以 開頭,這個是 開頭的,如果樓主是 cout n 這種書寫,在vc 6.0中將會導致編譯器執行運算子過載的操作,經過無數的庫函式呼叫後,最終得到一個12142的數值,若樓主採用cout n 21.1111這種格式的寫法,由於沒有換行操作,將會在21前面加上一個1...