繁体   English   中英

对32位整数进行按位操作

[英]bit wise manipulation on a 32-bit integer

我正在尝试读取32个寄存器,修改其前8位[BIT7:BIT0],并写回其值。 下面的代码实现了吗?

reg_val = register_read(register_object);
reg_val = ((reg_val & 0xffffff00) | new_value));
register_write(register_object,reg_val);

这也是实现这一目标的最有效方法。任何建议或评论都会受到赞赏。

除非保证new_value只有8位宽,否则应确保:

reg_val = ((reg_val & 0xffffff00) | (new_value & 0xff));

也是最有效的方法吗?

任何值得一试的编译器都可以将其翻译成The Right Thing。

假设保证new_value <256,并假定它们是无符号整数,则可以,这是正确的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM