我试图读取32位寄存器,修改其前8位[BIT7:BIT0]并回写其值。 下面的代码是否实现了这个目标?对32位整数进行位处理
reg_val = register_read(register_object);
reg_val = ((reg_val & 0xffffff00) | new_value));
register_write(register_object,reg_val);
这也是最有效的方式来实现that.any建议或意见表示赞赏。
我试图读取32位寄存器,修改其前8位[BIT7:BIT0]并回写其值。 下面的代码是否实现了这个目标?对32位整数进行位处理
reg_val = register_read(register_object);
reg_val = ((reg_val & 0xffffff00) | new_value));
register_write(register_object,reg_val);
这也是最有效的方式来实现that.any建议或意见表示赞赏。
除非new_value
被广泛保证只有8位,你应该确保它:
reg_val = ((reg_val & 0xffffff00) | (new_value & 0xff));
而且是最有效的方式来实现这一目标?
任何值得其盐的编译器都会将其转化为正确的东西。
右括号太多,但明显的意图是正确的(与EboMike确定的'new_value <256' :) –