我正在使用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添加为
答案 0 :(得分:0)
我无法重建您的错误。放置w1
,w2
和z8
的虚拟值,代码可以正常工作。因此,我建议的是检查以下内容:
您必须确保bitxor
的输入为非否定,并且它们的值必须小于或等于2^64 - 1
。检查sum1, sum2
和z8
并确保是这种情况。
确保w1
和w2
仅包含值0或1.您在sum1
和{{1}中所做的工作}正在重建8位无符号数的基数10表示。
因为这看起来像是8位无符号整数,所以使用附加参数sum2
调用bitxor
以强制转换为此类型可能是明智的:
uint8
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