如何在 C++ 中手动计算有符号乘法的高位部分?喜欢Getting the high part of 64 bit integer multiplication (仅限无符号),但如何计算进位/借位?
我不是说转换成更大的类型(那很简单),而是真正的手动计算,所以它也适用于 int128_t。 我的目标是编写一个模板函数,它始终为有符号和无符号参数返回正确的高部分 (u/int8..128_t):
template <typename Type>
constexpr Type mulh(const Type& op1, const Type& op2) noexcept
{
if constexpr (std::is_signed_v<Type>) return ???;
else return see link;
}
最佳答案
看起来你正在实现通常可用的东西 编译器 builtin functions .
在标准 C++ 中实现这些结果会导致代码效率较低。这作为脑力锻炼仍然很有趣,但为什么你要我们破坏它的整体呢?
关于c++ - 在 C++ 中获取有符号整数乘法的高部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57384467/