MATLAB的bitxor函数有什么作用?

时间:2016-11-04 20:08:27

标签: matlab

我用数字试过它,似乎它产生两个数之和的绝对值或差值的绝对值。但我无法弄清楚一般规则。我阅读了关于Mathworks的描述,但它没有用。以下是一些例子:

>> bitxor(1,1:10)
ans =    
     0     3     2     5     4     7     6     9     8    11

>> bitxor(2,1:10)
ans =
     3     0     1     6     7     4     5    10    11     8

>> bitxor(3,1:10)
ans =
     2     1     0     7     6     5     4    11    10     9

>> bitxor(4,1:10)
ans =
     5     6     7     0     1     2     3    12    13    14

1 个答案:

答案 0 :(得分:1)

如果用二进制格式表示整数,可能更容易看出bitxor的作用。然后对于每个位位置,如果两个数字不同,则 xor 操作返回1,如果它们相同则返回0。

为了演示,我们将使用以下(丑陋的)let month = Calendar.current.component(.month, from: dataPoint.date) let year = Calendar.current.component(.year, from: dataPoint.date) 函数,该函数获取整数数组并返回每个整数的二进制(4位,准确)字符串表示形式,并且格式化它们是一个水平的字符串'数组'每个4位字符串之间有空格。这将使我们能够在视觉上比较两个4位输入及其xor输出。

binarize

然后

binarize = @(x) reshape([dec2bin(x,4)'; repmat(' ',1,size(dec2bin(x)',2))],1,[]);

确认对于下一行中的每个数字,如果它上面的两个数字不同则为1,否则为0;并且最后一行对应于整数[0,3,2,5,4,7,6,9,8,11]的4位表示,如示例所示。