1

计算 2^32 的最简单方法是2*2*2*2*2......= 4294967296 ,我想知道有没有其他方法可以得到 4294967296?(2^16 * 2^16被视为与 相同的方法2*2*2....

有多少种计算方法?
有什么函数可以计算吗?

我想不出任何方法来计算它2*2*2...

4

6 回答 6

9
2 << 31

有点偏移。它有效地将 2 提高到 32 次方。

于 2013-07-12T16:47:51.067 回答
1

如果您不太喜欢二进制魔法,那么我建议您使用 quickpower 。此函数会及时计算 x nO(logn)

 int qpower(int x,int n)
 {
   if(n==0)return 1;
   if(n==1)return x;
   int mid=qpower(x,n/2);
   if(n%2==0)return mid*mid;
   return x*mid*mid;
 }
于 2013-07-12T16:59:24.050 回答
1

2如果您使用的是普通计算机,您可以通过31(ie )左移位移2<<31以获得 2^32。

在标准 C 中:

unsigned long long x = 2ULL << 31;

unsigned long long是必需的,因为unsigned long不能保证 simple 足够大来存储 的值2<<31

在C99 标准的第5.2.4.2.1节第 1 段中:

...以下内容应替换为与根据整数提升转换为相应类型的对象的表达式具有相同类型的表达式。它们的实现定义值的大小(绝对值)应等于或大于所示值,符号相同。

— 类型对象的最大值unsigned long int

ULONG_MAX 4294967295 // 2^32 - 1

— 类型对象的最大值unsigned long long int

ULLONG_MAX 18446744073709551615 // 2^64 - 1

于 2013-07-12T16:47:59.803 回答
1

选项:

  1. 1 << 32
  2. 2^32 = (2^32 - 1) + 1 = (((2^32 - 1) + 1) - 1) + 1 = ...
  3. 在一张桌子上安排 32 个项目。计算您可以选择其中子集的方式。
于 2013-07-12T16:48:06.653 回答
0

在 Groovy/Java 中,您可以使用长数(有符号整数在 Java 中最大为 2^31)执行以下操作

long twoPOW32 = 1L << 32;
于 2013-07-15T00:49:07.993 回答
0

为什么不使用Math.Pow()(在 .NET 中)。我认为大多数语言(或环境)都会为您支持类似的功能:

Math.Pow(2,32);
于 2013-07-12T16:53:20.660 回答