我用数字试过它,似乎它产生两个数之和的绝对值或差值的绝对值。但我无法弄清楚一般规则。我阅读了关于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
答案 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位表示,如示例所示。