【发布时间】:2014-03-29 10:45:19
【问题描述】:
给定一个 16 位的整数。我必须使用位操作或 c++ 中的任何其他方法打印它的平方。我试图将数字作为 long int 但它不起作用,因为 long int 的范围更小比所需的输入。
【问题讨论】:
-
尝试将其转换为浮点数:
double d = (double)i?然后位操作会更棘手,但那里有很多材料。否则,如果您使用 gcc,则可以使用 128 bit integers。 -
如果您需要大量空间,您可以随时使用
long long i = d*d -
如果这还不够,请使用两个 128b 整数并手动将位从一个转移到另一个。在这里查看类似的问题,例如this one。
-
16 位数字的平方最多可以有 32 位。我认为没有任何内置类型可以处理这个问题。
标签: c++