sur*_*pta 3 c integer bit-manipulation
我有一个十六进制格式的32位整数变量说0x9B13488或0x1407E8.默认情况下,它与0x099B1348或是对齐0x001407E8.但我希望它与左对齐0x9B134880或0x1407E800.任何人都可以帮助我吗?
你真正要求的是是否设置了高阶4位.你可以这样做:
uint32_t left_align(uint32_t value)
{
if (value) {
while ((value & 0xF0000000U) == 0) {
value <<= 4;
}
}
return value;
}
Run Code Online (Sandbox Code Playgroud)
只要该值为非零且高阶4位为0,则向左移动4直到它们为非零.