2014-07-09 20 views
1

我想一起實現xor。例如,我有兩個比特對,分別是6(110)和3(011)。現在我想實現兩個輸入的按位異或。它可以通過matlab中的bitxor函數來完成。如何在matlab中將Bitxor表示爲mod

out=bitxor(6,3);%output is 5 

但我想通過mod函數而不是bitxor實現該方案。如何用matlab做到這一點?非常感謝。這是我的代碼

out=mod(6+3,2^3) %2^3 because Galois field is 8 (3 bits) 
+0

好奇,如果答案在這裏提供給你的工作?如果有,請考慮接受它,以便它可以在此處在Stackoverflow中視爲「已關閉」。 – Divakar

回答

3

代碼

function out = bitxor_alt(n1,n2) 

max_digits = ceil(log(max(n1,n2)+1)/log(2));%// max digits binary representation 

n1c = dec2bin(n1,max_digits); %// first number as binary in char type 
n2c = dec2bin(n2,max_digits); %// second number as binary in char type 

n1d = n1c-'0'; %// first number as binary in double type 
n2d = n2c-'0'; %// second number as binary in double type 

out = bin2dec(num2str(mod(n1d+n2d,2),'%1d')); %// mod used here 

return; 
+0

Darnit!我正要寫一個答案。你再次擊敗我...... P:這與我的方法基本相同。 +1 – rayryeng

+0

@rayryeng哈哈有罪我! :)並感謝您的支持! – Divakar

+0

可能的改進;第一行:'max_digits = ceil(log2(max(num1,num2)));',最後一行:'out = sum(pow2(mod(num1d + num2d,2),max_digits-1:-1:0)) ' – Amro