我在堆栈溢出中发现了几个线程,这些线程演示了当两个操作数均为正数时如何将两个16位值组合为一个32位值,但是我发现如果两个操作数均为负数时它们将不起作用。
这是我目前正在使用的东西:
uint32_t combined(uint16_t low,uint16_t high)
{
return (static_cast<uint32_t>(high) << 16) + static_cast<uint32_t>(low);
}
仅当high
和low
为正数时,此函数才返回正确的值。当一个或两个参数均为负数时,如何修改此函数以返回正确的结果?