2的幂

下列无限长的数字集合就是我们所知的2的幂:

.

为什么叫2的幂?模式是什么?如何用数学来描述?表达式是什么?我们将在本文中一一解答。

我们以三个基本命名开始,称三个基本表达式或子集为:2的正幂,2的负幂,2的0次幂。作为后文的提纲。

2的正幂(The Positive Powers of Two)

想一想一个从2开始并且不断翻倍的集合:{2, 4, 8, 16, 32, 64, …}。这就是无限的2的正幂。

为什么此集合中的数字被称作2的正幂?首先,什么是“正幂”?正幂是“正指数”的简称。例如,可以将2·2·2·2·2改写成25。读作“2执行5次幂运算(two raised to the fifth power)”或“2的5次幂运算(two to the fifth power)”或简称“2的5次方(two to the fifth)。”读法随意,它意味着5个2相乘得到-32。因为我们对2进行幂运算,我们称25为2的幂;更具体一点,2的正幂。

按我们的排列顺序,每一个2的正幂都是前一个数字的两倍。你可以把因子更清楚地写为:

{2, 2·2, 2·2·2, 2·2·2·2, 2·2·2·2·2, 2·2·2·2·2·2, …}.

使用表达式可以写为{21, 22, 23, 24, 25, 26, …}。(这里21代表2-没有执行乘法)。基于这个模式,我们可以更简明地写作{2n | n is an integer > 0},读作“2n的集合其中n为正整数(the set of all elements 2n such that n is a positive integer).”

2的负幂(The Negative Powers of Two)

想一想一个从1/2开始并且不断减半的集合:。等价的,设想一个从十进制小数0.5开始并且不断减半的集合:{0.5, 0.25, 0.125, 0.0625, 0.03125, 0.015625, …}。每种形式都是无限正分数的集合,称为2的负幂(the negative powers of two)。

为什么集合里的数称作2的负幂?首先,什么是负幂或者什么是负指数?这当然不是负数连乘的简称-不是这个意思。那么,形如2-5 (2的-5次幂或2的-5次方)是什么意思?它意味着求2的5次幂然后取其倒数,得1/25 = 1/32 = 0.03125。比较集合{2, 4, 8, 16, 32, 64, …}和,倒数关系一目了然。

按照我们的排列顺序,每一个2的负幂都是前一个因子的一半。你可以把因子更清楚地写为:

.

如果你合并下分母,得到

.

可以使用正幂表达式表示为

.

认识到这是负指数的话,你可以改写为{2-1, 2-2, 2-3, 2-4, 2-5, 2-6, …}.更简明一点,{2n | n is an integer < 0}, 读作“2n全部元素的集合其中n是负整数.”

强调一下-词语“负”修饰的是“幂”而不是“2的幂”。幂是负的,而不是2的幂是负的。我们不能说,例如,-8是2的负幂(另一种不同情形是-它是负的2的幂)。记住-2的负幂是正数。

2的0幂(Two to The Zeroth Power)

至此我们已经讨论过了除了0以外的2的所有整数幂。那2的0次幂或20是什么呢?指数为0的表达式没有像正幂或负幂那样简洁的解释。它只是被定义为1(使其能被算术运算)。如同除了0外的任何数的0次幂,20 = 1.2的0次幂是1,我们定义为一个元素的集合{1}或{20}.

2的幂

如果你合并2的正幂,2的负幂和2的0幂,你得到2的幂的完整集合。这个集合包含了所有2n其中n是一个整数,或{2n | n is an integer}. 值为:

,

或等价的,包含小数形式分数,

{…, 0.015625, 0.03125, 0.0625, 0.125, 0.25, 0.5, 1, 2, 4, 8, 16, 32, 64, …}.

你会留意到在这个集合中我们已经朝相反的方向写入了2的负幂。这是表示在两个方向都无限的集合的标准方式。数列的方向跟大小相关,数字越往左越趋于无限小越往右越趋于无限大。同时这样的写法也包含了一条简单的规律:任意两个相邻的数,右边数为左边数的两倍,左边数为右边数的一半。

其它分区

有时候可以很方便把2的幂以别的方式分区。例如,你可以把此集合认为是两个子集的并集:2的负幂和2的非负幂。2的非负幂包含{20}和2的正幂:{1, 2, 4, 8, 16, 32, 64, …} 或 {2n | n is an integer ≥ 0}。 这种分解经常用于比如二进制数。

类似的,你可以把此集合认为是2的正幂和2的非正幂的并集。2的非正幂包含{20}和2的负幂,写作{2n | n is an integer ≤ 0}. 只是这种分解方式并不常用。

总结

下表概括了本次讨论的内容:

2的幂和其主要子集。

下面是相同的符号表示:

  • 2的幂 = {2n | n is an integer}.
  • 2的正幂 = {2n | n is an integer > 0}.
  • 2的负幂 = {2n | n is an integer < 0}.
  • 2的非负幂 = {2n | n is an integer ≥ 0}.
  • 2的非正幂 = {2n | n is an integer ≤ 0}.

下面是相同的文字描述版:

2的幂是2进行整数的幂运算。2的幂根据其指数的符号进行分类:正数,负数,非负数,非正数。2的幂都是正数。2的非负幂都是整数,2的负幂都是分数。2的负幂恰好是2的正幂的倒数,可以表示为对应的分数或小数。

尾注

Competing Definitions

如果这个2的幂的定义比你见过的定义更宽泛,那是因为通常的应用中有其它的一些定义(see “A Standard Definition of The Powers of Two”).

集合vs序列

技术上,我们并不严格区分集合和序列。集合定义的元素没有特定次序,而序列定义了特定次序的一系列元素。{1, 2, 4} 和 {4, 1, 2} 是相同的集合,但 (1, 2, 4) 和 (4, 1, 2)是不同的序列。

我们按顺序列出了2的幂并且以此顺序描述其特性,就是说我们已经隐式地定义了一个序列-事实上是一个几何学序列。这不会引起混乱,我们将利用这一事实,使用的措辞为“添加开头6个2的非负幂”。

时间: 2024-11-07 00:21:56

2的幂的相关文章

矩阵快速幂刷题系列

来源自http://blog.csdn.net/chenguolinblog/article/details/10309423 hdu 1575 Tr A Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5587    Accepted Submission(s): 4200 Problem Description A为一个方阵,则Tr

快速判断一个数是否是4的幂次方,若是,并判断出来是多少次方!

将4的幂次方写成2进制形式后,很容易发现有个特点,2进制中只有1个1(1在奇数位置),并且后面跟了偶数个0:因此问题可以转化为判断1后面是否跟了偶数个0就可以了. 4的整数次幂的二进制可以写为2^(2*n),即也可以写成2的幂次方,当然就满足2的幂次方的条件,即num&(num-1)==0. 思路:首先用条件num&(num-1)==0来判断是否为2的幂次方,若不满足,则不是.若满足,再用条件num&0x5555 5555 来判断,若为真,则这个整数是4 的幂次方.否则不是. #i

计算机中如何实现除数是2的幂次的除法【转载自CSDN】

前言: 本来是在看汇编里面的数据条件传送指令,做习题的时候看着这么一道有关于2的幂次方除法的题目.结果傻眼了,又尼玛不会了.........第二章看的时候就稀里糊涂的,看了几遍也没看太懂,这回又涉及到了 ,发现再回来看还是容易一点.所以写此博文,方便日后复习. 我今天遇到的问题如下: 问题: 除法,在我们平时的算数运算中,结果总是向0的方向舍入的,但是在计算机中,舍入的方式有所不同.在大多数的机器中,除法要比乘法还有加法这些运算都要慢很多倍,计算机中对于2的幂次这种数很是敏感,因为计算机当中用到

快速幂取模(POJ 1995)

http://poj.org/problem?id=1995 以这道题来分析一下快速幂取模 a^b%c(这就是著名的RSA公钥的加密方法),当a,b很大时,直接求解这个问题不太可能 利用公式a*b%c=((a%c)*b)%c 每一步都进行这种处理,这就解决了a^b可能太大存不下的问题,但这个算法的时间复杂度依然没有得到优化 由此可以用快速幂算法优化: http://www.cnblogs.com/qlky/p/5020402.html 再结合取模公式: (a + b) % p = (a % p

HDU 1757 A Simple Math Problem (矩阵快速幂)

[题目链接]:click here~~ [题目大意]: If x < 10 f(x) = x. If x >= 10 f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + -- + a9 * f(x-10); 问f(k)%m的值. [思路]:矩阵快速幂,具体思路看代码吧,注意一些细节. 代码: #include<bits/stdc++.h> using namespace std; typedef long long LL; const

快速幂及快速幂取模

快速幂顾名思义,就是快速算某个数的多少次幂.其时间复杂度为 O(log?N), 与朴素的O(N)相比效率有了极大的提高.——bybaidu 快速幂可以用位运算这个强大的工具实现. 代码: 1 int pow(int a,int b) 2 { 3 int ans=1; 4 while(b!=0) 5 { 6 if(b&1) 7 ans*=a; 8 a*=a; 9 b>>=1; 10 } 11 return ans; 12 } 快速幂取模需要记住一个定理:积的取模等于取模积的取模:算法是蒙

Codeforces Round #291 (Div. 2) E - Darth Vader and Tree (DP+矩阵快速幂)

这题想了好长时间,果断没思路..于是搜了一下题解.一看题解上的"快速幂"这俩字,不对..这仨字..犹如醍醐灌顶啊...因为x的范围是10^9,所以当时想的时候果断把dp递推这一方法抛弃了.我怎么就没想到矩阵快速幂呢.......还是太弱了..sad..100*100*100*log(10^9)的复杂度刚刚好. 于是,想到了矩阵快速幂后,一切就变得简单了.就可以把距离<=x的所有距离的点数都通过DP推出来,然后一个快速幂就解决了. 首先DP递推式很容易想到.递推代码如下: for(

NYOJ127 星际之门(一)(最小生成数的个数+快速幂)

题目描述: http://acm.nyist.net/JudgeOnline/problem.php?pid=127 可以证明,修建N-1条虫洞就可以把这N个星系连结起来. 现在,问题来了,皇帝想知道有多少种修建方案可以把这N个星系用N-1条虫洞连结起来? 输入 第一行输入一个整数T,表示测试数据的组数(T<=100) 每组测试数据只有一行,该行只有一个整数N,表示有N个星系.(2<=N<=1000000) 输出 对于每组测试数据输出一个整数,表示满足题意的修建的方案的个数.输出结果可能

POJ 3233 - Matrix Power Series ( 矩阵快速幂 + 二分)

POJ 3233 - Matrix Power Series ( 矩阵快速幂 + 二分) #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; #define MAX_SIZE 30 #define CLR( a, b ) memset( a, b, sizeof(a) ) int MOD = 0; int n, k; st

HDU 4990 Reading comprehension(找规律+矩阵快速幂)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4990 Problem Description Read the program below carefully then answer the question. #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include<iostream> #include