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

用c語言實現異或門計算模擬實驗

發布時間: 2022-04-15 15:14:46

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語言中的異或運算

首先,我們看一下異或的原理:
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語言異或加密實現的原理為,將任意值,與相同值兩次異或後,結果與原值相同。所以可以通過將源數據與一個固定的值(秘鑰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語言實現用用二進制碼與數據求與,或,異或運算

1. 想讓一個變數等於0000..01直接給賦值1就可以。想讓它等於11111..1直接賦值-1就可以,也可以賦值~(0)。

2. 不用非要與1111..1求與,如果1那一位移出的話直接就變成0了。

3. 如果不是為了練習的話,檢測本地系統的數據長度直接用關鍵字sizeof就可以,不用寫程序。

Ⅳ 如何用C語言實現兩個16進制數的異或

C語言中,異或運算符是^。
不管運算對象是10進制的數還是16進制的數(或其他進制的數),進行^運算時,都是將運算對象轉換為二進制,按位進行異或運算。

舉例說明如下:
int a=0x9a, b=0x56;
int c = a^b; // 將a和b進行異或運算
運算過程是
a = 1001 1010 // 0x9a
b = 0101 0110 // 0x56
c = 1100 1100 // 0xcc (對應的二進制位進行異或運算)

輸出的時候可以按16進制輸出,如:
printf("%x", c);

Ⅵ 急:如何編程實現邏輯「與」「異或」運算

邏輯或 異或
真值表 a||b a&b
a=1,b=1 1 0
a=1,b=0 1 1
a=0,b=1 1 1
a=0,b=0 0 0

「按位與」運算符(&)

00000011(2)
&00000101(2)
00000001(2)
由此可知3&5=1
c語言代碼:
#include <stdio.h>
main()
{
int a=3;
int b = 5;
printf("%d",a&b);
}

「異或」運算符(^)
他的規則是:若參加運算的兩個二進制位值相同則為0,否則為1
即0∧0=0,0∧1=1,1∧0=1, 1∧1=0
例: 00111001
∧ 00101010
00010011
c語言源代碼:
#include <stdio.h>
main()
{
int a=071;
int b = 052;
printf("%d",a^b);
}

更多的自己看

Ⅶ C語言的異或運算

機內碼(補碼):
23: 00000000,00010111
2: 00000000,00000010
5: 00000000,00000101

異或優先順序高,先算異或,再算位或

2^5,2與5異或,異或的法則是相同的為0,不同的為1,由上面的二進制很明顯結果為:00000000,00000111
再算位或,23與此結果求或,很顯然仍然為:00000000,00010111 即結果是23。

Ⅷ 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語言異或運算怎麼算

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