Wrong answer of xor operation
Mostra commenti meno recenti
a=(dec2bin(13))
a=1101
b=(dec2bin(14))
b=1110
c=xor(a,b)
the answer i get is c= 0 0 0 0
which is wrong. how should i solve this problem ?
1 Commento
Raza Ali
il 23 Feb 2014
Risposte (2)
Image Analyst
il 23 Feb 2014
Try this:
% Subtract '0' to get numerical array.
a=(dec2bin(13))-'0'
b=(dec2bin(14))-'0'
% Two ways to do xor:
d1 = (a | b) & ~(a & b)
d2=xor(a,b)
5 Commenti
Raza Ali
il 23 Feb 2014
Sagar Damle
il 23 Feb 2014
You can try these also -
a=(dec2bin(13))
b=(dec2bin(14))
% Since 'EX-OR'ing is same as modulo-2 addition
d1 = rem(a+b,2)
d2 = mod(a+b,2)
For more information,read this.
There are many functions in MATLAB to convert base 10 to base 2 of a number –
1. dec2base()
2. dec2bin()
3. de2bi()
4. dec2binvec()
However,outputs of these are are not in same format. Run this code on your computer for understaning purpose. See help about these functions in MATLAB.
Note : '0' represents ASCII value of zero(0) which is 48. So,
ans2 = dec2base(4,2) - '0'
is same as
ans2 = dec2base(4,2) – 48
Play with these functions! ENJOY!
% Program -
temp1 = dec2base(4,2)
ans1 = str2num(dec2base(4,2))
ans2 = dec2base(4,2) - '0'
temp2 = dec2bin(4)
ans3 = dec2bin(4) - '0'
temp3 = de2bi(4)
temp4 = de2bi(4,'right-msb')
ans4 = de2bi(4,'left-msb')
temp5 = dec2binvec(4)
ans5 = seqreverse(dec2binvec(4))
whos
Raza Ali
il 23 Feb 2014
Raza Ali
il 23 Feb 2014
Image Analyst
il 23 Feb 2014
Raza, subtraction of '0' turns it from a character string into an array of individual numbers to that we can use xor like you want to.
Azzi Abdelmalek
il 23 Feb 2014
a and b are char, there is a difference betwenn
xor('1','0')
and
xor(1,0)
5 Commenti
John D'Errico
il 23 Feb 2014
Modificato: John D'Errico
il 23 Feb 2014
To be honest, it does seem that xor should have a test for improper (non-numeric/non-logical) input, returning an error here, or at least a warning.
Raza Ali
il 23 Feb 2014
Azzi Abdelmalek
il 23 Feb 2014
Jhon, it seems that any character of a string is considered as true
str='I am true'
not(str)
This explains the result given by xor.
Raza Ali
il 23 Feb 2014
John D'Errico
il 23 Feb 2014
Yes, I recognize that. And thus my point. Since it is impossible to return a meaningful result, and it is likely that users, especially novices, can have problems, then an error should result. There can be no case where returning an error can be a problem for backwards compatibility, since xor never has returned anything meaningful for character input.
Categorie
Scopri di più su Logical in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!