我有一个十六进制格式的32位整数变量,例如0x9B13488
或0x1407E8
。默认情况下,它与0x099B1348
或0x001407E8
右对齐。但是我希望它与0x9B134880
或0x1407E800
对齐。有人可以帮我吗?
答案 0 :(得分:8)
您真正要问的是是否设置了高4位。您可以按照以下步骤进行操作:
uint32_t left_align(uint32_t value)
{
if (value) {
while ((value & 0xF0000000U) == 0) {
value <<= 4;
}
}
return value;
}
只要该值不为零且高4位为0,就向左移4,直到它们为非零为止。