2017-03-11 1 views
1

Ich weiß, dass bitxor Bit für Bit Addition Modulo 2 ist, ist also nicht bitxor(1000,10) soll 1010 geben? Warum gibt es mir 994?Warum gibt Matlab `bitxor (1000,10)` 994?

+1

Wegen dieser "Modulo 2" an der 4. Bit ... '1111101000 xor 0000001010 = 1111100010'. – beaker

+0

@Beaker, wie bekomme ich es, um mir "1010" zu geben? Gibt es eine andere Funktion? –

+1

Ich sprach zu schnell ... nur Addition gibt 1010 dezimal. Bitweise Operatoren geben Ihnen in diesem Fall nicht den benötigten Übertrag. Dies setzt voraus, dass "1000" und "10" Dezimalwerte sind, nicht binär. – beaker

Antwort

5

Das Problem ist 1000 und 10 sind keine Binärzahlen. In dezimal 0b1000 würde 8 und 0b10 wäre 2. Try this:

bitxor(8,2) 
ans = 10 

Nun könnte man seine falsch denken, aber ans ist auch nicht binär, seine dezimal 10, die 1010 binär entspricht.

EDIT: um es so, wie Sie versuchen, dies wollen funktioniert:

dec2bin(bitxor(bin2dec('1000'), bin2dec('10')) 
ans = 1010 
+2

Das ist ein guter Punkt, ich hatte nicht einmal daran gedacht, dass das OP bedeutet, dass die Eingänge binär sind. – beaker

Verwandte Themen