在matlab中使用bitxor时出错

时间:2015-07-09 14:55:06

标签: matlab

我正在使用matlab中的代码,这是一个创建问题的模块,如下所示:

    sum1=0 ;
    sum2=0 ;     
    for i=1:8
        sum1=sum1+w1(i)*(2^(i-1));
    end
    for i=1:8
        sum2=sum2+w2(i)*(2^(i-1));
    end
    sum1=floor(sum1);
    sum2=floor(sum2);
    z8=floor(z8);
    l1=bitxor(sum2,z8);
    l2=bitxor(sum1,z8);

这里z8和w1(i),w2(i)是整数元素。 每当我编译我得到一个常规错误

"使用bitxor时出错 双输入必须包含整数值 ASSUMEDTYPE的范围。"

我看到了文档并尝试将ASSUMEDTYPE添加为

1 个答案:

答案 0 :(得分:0)

我无法重建您的错误。放置w1w2z8的虚拟值,代码可以正常工作。因此,我建议的是检查以下内容:

  1. 您必须确保bitxor的输入为非否定,并且它们的值必须小于或等于2^64 - 1。检查sum1, sum2z8并确保是这种情况。

  2. 确保w1w2 仅包含值0或1.您在sum1和{{1}中所做的工作}正在重建8位无符号数的基数10表示。

  3. 因为这看起来像是8位无符号整数,所以使用附加参数sum2调用bitxor以强制转换为此类型可能是明智的:

    uint8
  4. 运行示例

    l1 = bitxor(sum2, z8, 'uint8');
    l2 = bitxor(sum1, z8, 'uint8');
    

    使用上面的代码并运行代码,我为w1 = [1 0 1 0 1 0 1 0]; w2 = 1 - w; z8 = 35; l1提供了此代码:

    l2