當前位置:首頁 » 法規百科 » 異或演算法規律

異或演算法規律

發布時間: 2022-06-20 15:05:03

⑴ 異或的巧用

與其它語言不同,C語言和C++語言的異或不用xor,而是用「^」,鍵入方式為Shift+6。(而其它語言的「^」一般表示乘方)
若需要交換兩個變數的值,除了通常使用的借用中間變數進行交換外,還可以利用異或,僅使用兩個變數進行交換,如: a=a^b;b=b^a;a=a^b;詳解: a1=a^bb=a1^b=a^b^b=a//此時a1=a^aa=a1^b=a1^(a1^b)=a1^a1^b=b注意: a=a^b^(b=a);//此類形式是不正確的UB行為,在不同編譯器中會有不同的結果,切勿使用這樣就完成了a與b的交換。
綜上:同一變數與另一變數和其異或值異或等於自身。
用例:可使用於加密演算法某一環節或更多環節,使演算法更復雜,不易被破解,安全性更高。

⑵ java中異或是怎樣算的

概述

i = 14,異或演算法轉換二進制,同則取0異則取1;

解析

異或是一種基於二進制的位運算,用符號XOR或者^表示,其運演算法則是對運算符兩側數的每一個進制位同值則取0,異值則取1.

簡單理解就是不進位加法,如1+1=0,0+0=0,1+0=1.

For example:

3^5 = 6

轉成二進制後就是 0011 ^ 0101 二號位和三號位都是異值取1 末尾兩個1同值取零,所以3^5 = 0110 = 6

而 i = 50 ,j = 60;

所以:

i 的二進制 = 00110010

j 的二進制 = 00111100

同位相同取0,不同取1所以得出來的值為00001110

i = i ^ j;所以i = 00001110 = 14


拓展內容

異或運算符

性質

1、交換律
2、結合律(即(a^b)^c == a^(b^c))
3、對於任何數x,都有x^x=0,x^0=x
4、自反性 A XOR B XOR B = A xor 0 = A

異或運算最常見於多項式除法,不過它最重要的性質還是自反性:A XOR B XOR B = A,即對給定的數A,用同樣的運算因子(B)作兩次異或運算後仍得到A本身。這是一個神奇的性質,利用這個性質,可以獲得許多有趣的應用。 例如,所有的程序教科書都會向初學者指出,要交換兩個變數的值,必須要引入一個中間變數。但如果使用異或,就可以節約一個變數的存儲空間: 設有A,B兩個變數,存儲的值分別為a,b,則以下三行表達式將互換他們的值 表達式 (值) :
A=A XOR B (a XOR b)
B=B XOR A (b XOR a XOR b = a)
A=A XOR B (a XOR b XOR a = b)

#code:

⑶ 請幫我講解一下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的數值「巧妙」地交換了……
我也是網路的,和樓主一起學習…………

⑷ 異或運算一組數

看你的表示形式應該是16進制數,異或就是按位比較,不一樣的位運算結果就是1,
0000 0001 //01
0010 0000 //20 XOR後 0010 0001
0001 0111 //17 XOR後 0011 0110
0000 0000 //00 XOR後 0011 0110
0000 0011 //03 XOR後 0011 0101
1110 1000 //E8 XOR後 1101 1101 十六進制數就是 DD
所以結果就是DD,事實上你應該寫嚴謹一點,0xDD,以後書寫16進制數都加上前綴0x,希望你喜歡編程

⑸ A⊕B⊕C⊕D怎麼計算

第一、相信你是知道兩個命題變數的異或運算的規則的——只要你知道它的真值表就夠了,其規律是:(兩變數取值)相同則(結果為)假,不同則真;
第二、你應該知道兩個命題變數的異或運算的結果也是一個命題變數,它可以參與下一步的邏輯運算;
第三、多個異或連續運算,就類似數學上的連加、連乘運算:將前兩個數的運算結果,與第三個數繼續運算;再將結果與第四個運算;再……其中的每一步都要按照相應運算的規則進行;

現在,你可以自己進行計算了。不過我曾經對多個變數的異或(和同或)運算的規律做過分析,現將結果告訴你,你可以自行驗證:
1、多個命題(或命題變數)的「異或」運算:其結果依賴於參與運算的所有量中,取值為「真」的量的「個數」的「奇偶性」:
若含「奇數」個「真命題」,則結果為「真」;
若含「偶數」個「真命題」,則結果為「假」;(註:零個也是偶數個)

換句話說:命題表達式 A⊕B⊕C⊕D 結果為「真」,當且僅當 A、B、C、D 中有奇數個(即 1 個或 3 個)變數的取值為「真」;而至於其中「假命題」的個數,則對結果「無任何影響」。關於這一點的證明,可以從下面兩個恆等式中找到思路:
p ⊕ 1 = 非p;——增加一個「真命題」參與運算,總會將「原命題」變成其「反命題」;
p ⊕ 0 = p;——增加一個「假命題」參與運算,對「原命題」永遠沒影響;

2、多個命題(或命題變數)的「同或」運算:其結果依賴於參與運算的所有量中,取值為「假」的量的「個數」的「奇偶性」:
若含「奇數」個「假命題」,則結果為「假」;
若含「偶數」個「假命題」,則結果為「真」;

⑹ c#的異或運算符問題

a=b--和a=--b表達式解析和運算符優先順序,還有--用法的問題
先說解析=是賦值,在解析時,先運算=右面的表達式
右--是先取變數的值,再對變數做自減1操作
左--是先對變數做自減1操作,再取表達式的值
假設b=2,那麼a=b--的意思是先做a=2,再對b減1,結果a=2,b=2
a=--b先對b減1,表達式的值是1,結果a=1,b=2

⑺ 邏輯異或運算是什麼

1、異或(xor)是一個數學運算符。它應用於邏輯運算。

2、異或的數學符號為「⊕」,計算機符號為「xor」。其運演算法則為:a⊕b = (¬a ∧ b) ∨ (a ∧¬b)

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

4、邏輯異或運算簡稱異或。英文為exclusive OR,或縮寫成xor。

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

(7)異或算法規律擴展閱讀

一、運演算法則

1、a ⊕ a = 0

2、a ⊕ b = b ⊕ a

3、a ⊕b ⊕ c = a ⊕ (b ⊕ c) = (a ⊕ b) ⊕ c;

4、d = a ⊕ b ⊕ c 可以推出 a = d ⊕ b ⊕ c.

5、a ⊕ b ⊕ a = b

二、邏輯表達式:F=AB』⊕A』B((AB』⊕A』B)』=AB⊙A』B』,⊙為「同或」運算)

⑻ XOR演算法是什麼

1. xor (異或) ⊕,二進制運算。可逆運算。 1 xor 1=0,0 xor 0=0,1 xor 0=1,0 xor 1=1。 http://ke..com/view/64546.htm

⑼ 請問什麼是異或校驗

異或校驗演算法(又稱為BCC校驗)

下面就是異或校驗的演算法,多用於串口通信:

#include "stdio.h"

void main()

{

int i;

//任意10個數值,也可以不是8位

unsigned char data[10]={0x12,0x21,0x1A,0xB1,0xC1,0xEB,0xDF,0xCA,0xF6,0xDD};

unsigned char out;//用於保存異或結果

out=0x00;

for (i=0;i<sizeof(data);i++)

{

out^=data;

}

printf("原來的校驗值:%X ",out);

out^=(data[0]^0xee);//將data[0]改為新數據後計算新校驗和的方法

out^=(data[5]^0x20);//將data[5]改為新數據後計算新校驗和的方法

printf("修改後校驗值:%X ",out);

data[0]=0xee; //採用原始的方法計算新的校驗和,和前面的校驗和對比是否正確

data[5]=0x20; //採用原始的方法計算新的校驗和,和前面的校驗和對比是否正確

out=0x00;

for (i=0;i<10;i++)

{

out^=data;

}

printf("原始方法得出校驗值:%X ",out);

}

作用:

防止自己的程序被篡改。

有些可執行程序,當被改了資源時再運行會有文件已損壞的提示,這就是使用了數據校驗。本例是用md5做為數據校驗的演算法。當然你可以使用個性化的比如des作為數字簽名,那樣安全性更高。

(9)異或演算法規律擴展閱讀:

最簡單的檢驗

實現方法:最簡單的校驗就是把原始數據和待比較數據直接進行比較,看是否完全一樣這種方法是最安全最准確的。同時也是效率最低的。

應用例子:龍珠cpu在線調試工具bbug.exe。它和龍珠cpu間通訊時,bbug發送一個位元組cpu返回收到的位元組,bbug確認是剛才發送位元組後才繼續發送下一個位元組的。

奇偶校驗Parity Check

實現方法:在數據存儲和傳輸中,位元組中額外增加一個比特位,用來檢驗錯誤。校驗位可以通過數據位異或計算出來。

應用例子:單片機串口通訊有一模式就是8位數據通訊,另加第9位用於放校驗值。

md5校驗和數字簽名

實現方法:主要有md5和des演算法。

適用范圍:數據比較大或要求比較高的場合。如md5用於大量數據、文件校驗,des用於保

密數據的校驗(數字簽名)等等。

應用例子:文件校驗、銀行系統的交易數據

參考資料:網路-數據校驗

⑽ 異或門 的演算法

「異或」XOR 函數當有奇數個輸入變數為真時,輸出為真!
當輸入X=0,Y=0 時 輸出S=0
當輸入X=0,Y=1 時 輸出S=1
0代表假 1代表真

異或門主要用在數字電路的控制中!

異或運算及異或門由邏輯非、邏輯與和邏輯或可以實現異或邏輯運算,即 。式中「 」為異或邏輯運算符號,讀為「異或」。實現異或運算的門電路是異或門,異或門的真值表如表1.13所示,其邏輯符號如圖1.11所示。
二輸入異或邏輯的運算規則是:若兩個輸入變數的邏輯值相同,則它們的異或值為「0」;
若兩個輸入變數的邏輯值不相同,則它們的異或值為「1」。簡言之,「相同則0,相異則1」。
http://www.hsit.e.cn/jingpin/dzjsjc/skja/1.doc

熱點內容
上市公司並購有哪些法律法規 發布:2025-01-23 11:09:55 瀏覽:539
人民法院的立案條件 發布:2025-01-23 10:55:41 瀏覽:504
法院不支持20 發布:2025-01-23 10:40:01 瀏覽:161
法院招財務 發布:2025-01-23 10:05:18 瀏覽:808
荊州法官助理 發布:2025-01-23 10:00:17 瀏覽:152
寵物進酒店規章制度 發布:2025-01-23 10:00:14 瀏覽:454
玉樹州法院升 發布:2025-01-23 09:45:37 瀏覽:513
通遼律師在線咨詢免費熱線 發布:2025-01-23 09:25:08 瀏覽:472
新勞動合同法同工同酬 發布:2025-01-23 09:20:33 瀏覽:898
道德經女門 發布:2025-01-23 08:29:27 瀏覽:651