在matlab中使用位异或的错误
我正在matlab中编写一个代码,下面是一个产生问题的模块,如下所示:在matlab中使用位异或的错误,matlab,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=
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)是整数元素。
每当我编译时,都会出现一个常规错误
“使用位异或时出错
双输入中必须有整数值
假定类型的范围。“
我查看了文档,并尝试将ASSUMEDTYPE添加为我无法重建您的错误。将
w1
、w2
和z8
的虚拟值放在一起,代码工作。因此,我建议检查以下事项:
位异或
的输入为非负,且其值必须小于或等于2^64-1
。检查sum1、sum2
和z8
,确保情况属实w1
和w2
仅包含0或1的值。您在sum1
和sum2
中所做的是重建8位无符号数字的10进制表示uint8
调用bitxor
以强制转换为这种类型可能比较谨慎:
l1 = bitxor(sum2, z8, 'uint8');
l2 = bitxor(sum1, z8, 'uint8');
l1
和l2
的结果:
>> l1
l1 =
137
>> l2
l2 =
118
您添加了什么作为
假定类型
?结果如何?
>> l1
l1 =
137
>> l2
l2 =
118