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

在c語言中異或怎麼算

發布時間: 2022-09-15 04:49:26

c語言的異或運算怎麼算,什麼叫高四位取反,第四位不變呀,求具體過程-_-#

1010
1001
高四位為1010,低四位為1001
高四位取反,低四位不變的結果為:
0101
1001
異或的作用:2個操作數對應位不同則為1,相同的則為0。
所以有方式:異或1則取反,異或0則不變
1010
1001
1111
0000

0101
1001
所以b的值為1111
0000

❷ c語言異或運算怎麼算

所謂異或就是不進位的加法,用二進製表示來異或很容易理解。

❸ 異或運算怎麼算

異或運算如下:可以A異或(A異或B)看作a^(a^b)=(a^a)^b,又因為a^a=0,原式可以簡化成0^b=b。

邏輯加法通常用符號「+」或「∨」來表示。邏輯加法運算規則如下:

0+0=0,0∨0=0。

0+1=1,0∨1=1。

1+0=1,1∨0=1。

1+1=1,1∨1=1。

從上式可見,邏輯加法有「或」的意義。也就是說,在給定的邏輯變數中,A或B只要有一個為1,其邏輯加的結果為1;兩者都為1則邏輯加為1。

語言巧用

與其它語言不同,C語言和C++語言(C++支持xor,用法和效果如'^'相同)的異或不用xor,而是用「^」,鍵入方式為Shift+6。(而其它語言的「^」一般表示乘方)若需要交換兩個變數的值,除了通常使用的借用中間變數進行交換外,還可以利用異或,僅使用兩個變數進行交換。

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

❺ C語言的異或運算

機內碼
(補碼):
23:
00000000,00010111
2:
00000000,00000010
5:
00000000,00000101
異或
優先順序
高,先算異或,再算位或
2^5,2與5異或,異或的
法則
是相同的為0,不同的為1,由上面的
二進制
很明顯結果為:00000000,00000111
再算位或,23與此結果求或,很顯然仍然為:00000000,00010111
即結果是23。

❻ C語言 異或運算

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
FILE *p1,*p2;
char ch,n;
p1=fopen("D:\\源文件.txt","r");
p2=fopen("D:\\目標文件.txt","w");
if(p1==NULL||p2==NULL)
{
printf("文件打開失敗\n");
exit(0);
}
printf("請輸入密鑰,並牢記,解密時要再次輸入:");//只要再對加密的文件再進行一次異或運算就得到源文件
n=getch();
printf("*\n");
while(1)
{
ch=fgetc(p1);
if(ch==EOF)
break;
ch=ch^n;
fputc(ch,p2);
fflush(p2);
}
fclose(p1);
fclose(p2);
return 0;
}

❼ 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語言 異或 運算符的使用

異或的意思就是相異為真。。
現在問題主要是出現在這一句。。
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。。
有什麼地方解釋不清的可以再問我。。嘿嘿。。

❾ 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

(9)在c語言中異或怎麼算擴展閱讀:

異或,英文為exclusive OR,縮寫成xor異或(xor)是一個數學運算符。它應用於邏輯運算。異或的數學符號為「⊕」,計算機符號為「xor」。其運演算法則為:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

如果a、b兩個值不相同,則異或結果為1。如果a、b兩個值相同,異或結果為0。

異或也叫半加運算,其運演算法則相當於不帶進位的二進制加法:二進制下用1表示真,0表示假,則異或的運演算法則為:0⊕0=0,1⊕0=1,0⊕1=1,1⊕1=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的數值「巧妙」地交換了……
我也是網路的,和樓主一起學習…………