将某个位设置为1个matlab

时间:2013-10-17 11:43:58

标签: matlab byte bit

我想将我的配置标头的某一位设置为1(字节10的第3位),如果它还不是1.然后我想保存这个新的配置标头作为我的旧配置标头。我可以设置好一点,但是我很难用新的替换旧字节来更新我的配置头。我希望我的新配置头是ConfigHeader = [128; 0; 0; 0; 0; 0; 0; 0; 0; 0; 30];。我知道这可能是一个非常简单的解决方案!!

ConfigHeader = [128;0;0;0;0;0;0;0;0;0;26];
ByteTen = ConfigHeader(11);
if bitget(ByteTen,3) == 0
% Set bit 3 of byte 10 to 1
bitset(ByteTen,3);

% Replace old config header with new one (bit changed to 1)
ConfigHeader = ??????
end

2 个答案:

答案 0 :(得分:1)

我不习惯位操作,但是从代码开始,下一个逻辑步骤是:

ConfigHeader(11) = ByteTen

也许您的整个代码甚至可以简化为:

bitset(ConfigHeader(11),3)

毕竟,一点只能是零或一,所以如果你总是希望以一个结束,你就不需要测试它。

答案 1 :(得分:1)

您必须将修改后的值分配回ConfigHeader,例如通过添加这一行:

ConfigHeader(11) = bitset(ByteTen,3);

这一行:

bitset(ByteTen,3);
只要你不使用它的输出,

就没有任何作用。