如何左对齐32位整数?

时间:2019-01-15 13:12:23

标签: c integer bit-manipulation

我有一个十六进制格式的32位整数变量,例如0x9B134880x1407E8。默认情况下,它与0x099B13480x001407E8右对齐。但是我希望它与0x9B1348800x1407E800对齐。有人可以帮我吗?

1 个答案:

答案 0 :(得分:8)

您真正要问的是是否设置了高4位。您可以按照以下步骤进行操作:

uint32_t left_align(uint32_t value)
{
    if (value) {
        while ((value & 0xF0000000U) == 0) {
            value <<= 4;
        }
    }
    return value;
}

只要该值不为零且高4位为0,就向左移4,直到它们为非零为止。