为什么Matlab的`bitxor(1000,10)`给出了994?

Ton*_*lds 1 matlab xor

我知道这bitxor是一点一滴加模2,所以不bitxor(1000,10)应该给1010?为什么它给我994?

Mag*_*tro 5

问题是1000和10不是二进制数.在十进制0b1000将是8和0b10将是2.试试这个:

bitxor(8,2)
ans = 10
Run Code Online (Sandbox Code Playgroud)

现在你可能认为它错了,但ans也不是二进制,它的十进制10等于1010二进制.

编辑:让它按照你想要的方式工作试试这个:

dec2bin(bitxor(bin2dec('1000'), bin2dec('10'))
ans = 1010
Run Code Online (Sandbox Code Playgroud)

  • 这是一个好点,我甚至没有认为OP意味着输入是二进制的. (2认同)