极大数的平方 给出一个16位的整数。我必须用位运算或C++中的其他方法来打印它的平方。我试图把这个数取为长int,但它不工作,因为长int的范围小于所需的输入。

极大数的平方 给出一个16位的整数。我必须用位运算或C++中的其他方法来打印它的平方。我试图把这个数取为长int,但它不工作,因为长int的范围小于所需的输入。,c++,C++,平方完全可以表示为无符号整数(32位): #包括 #包括 int main() { std::int32_t s=(std::int32_t(1)您始终可以选择更大的基本数据类型,但这通常只会延迟问题的解决。如果您想要取长的平方,您应该怎么做 如果你需要大量的数据,你需要一个更抽象、封装的数据表示。C++有合适的工具来提供这个工作,并且Boost库可以广泛地使用它们。具体来说,查看文档。它很复杂,但很强大。i?那么位操作将更加复杂,但有大量的材料。否则,如果您使用gcc,您可以使用。如果您需要大

平方完全可以表示为无符号整数(32位):

#包括
#包括
int main()
{

std::int32_t s=(std::int32_t(1)您始终可以选择更大的基本数据类型,但这通常只会延迟问题的解决。如果您想要取长的平方,您应该怎么做


如果你需要大量的数据,你需要一个更抽象、封装的数据表示。C++有合适的工具来提供这个工作,并且Boost库可以广泛地使用它们。具体来说,查看文档。它很复杂,但很强大。i

?那么位操作将更加复杂,但有大量的材料。否则,如果您使用gcc,您可以使用。如果您需要大量空间,您可以始终使用
long long i=d*d
,如果这仍然不够,请使用两个128b整数并手动将位从一个带到另一个。查看类似的示例这里的问题,比如。一个16位数字的平方的可能副本最多可以有32位。我认为任何内置类型都不能处理这个问题。我认为他指的不是16位整数。我认为他指的是16位十进制数字(我自己也有点不确定).abs的意义是什么?这个有符号的16位数字是什么?它的平方不适合整数?事实上@Jens我在寻找16位十进制数字。
#include <iostream>
#include <cstdint>

int main()
{
    std::int32_t s = (std::int32_t(1) << 16) - 1;
    std::uint32_t u = std::abs(s);
    std::uint32_t square = u * u;
    std::cout << square << " = " << std::hex << square << '\n';
    return 0;
}