In mathematics, a power of two means a number of the form 2n where n is an integer, i.e. the result of exponentiation with as base the number two and as exponent the integer n.
In a context where only integers are considered, n is restricted to non-negative values,[1] so we have 1, 2, and 2 multiplied by itself a certain number of times.[2]
Because two is the base of the binary numeral system, powers of two are common in computer science. Written in binary, a power of two always has the form 100…0 or 0.00…01, just like a power of ten in the decimal system.
Verbal expressions, mathematical notations, and computer programming expressions using a power operator or function include:
Two to the power of n, written as 2n, is the number of ways the bits in a binary integer of length n can be arranged; depending on the integer type these may represent partly positive and partly negative numbers and zero, or just non-negative ones. Either way, one less than a power of two is often the upper bound of an integer in binary computers. As a consequence, numbers of this form show up frequently in computer software. As an example, a video game running on an 8-bit system might limit the score or the number of items the player can hold to 255—the result of using a byte, which is 8 bits long, to store the number, giving a maximum value of 28 − 1 = 255. For example, in the original Legend of Zelda the main character was limited to carrying 255 rupees (the currency of the game) at any given time.
Powers of two are often used to measure computer memory. A byte is now considered to be eight bits (an octet, resulting in the possibility of 256 values (28). (The term byte has been, and in some case continues to be, used to be a collection of bits, typically of 5 to 32 bits, rather than only an 8-bit unit.) The prefix kilo, in conjunction with byte, may be, and has traditionally been, used, to mean 1,024 (210). However, in general, the term kilo has been used in the System International to mean 1,000 (103). Binary prefixes have been standardised, such as kibi' meaning 1,024. Nearly all processor registers have sizes that are powers of two, 32 or 64 being most common.
Powers of two occur in a range of other places as well. For many disk drives, at least one of the sector size, number of sectors per track, and number of tracks per surface is a power of two. The logical block size is almost always a power of two.
Numbers which are not powers of two occur in a number of situations such as video resolutions, but they are often the sum or product of only two or three powers of two, or powers of two minus one. For example, 640 = 512 + 128, and 480 = 32 × 15. Put another way, they have fairly regular bit patterns.
A prime number that is one less than a power of two is called a Mersenne prime. For example, the prime number 31 is a Mersenne prime because it is 1 less than 32 (25). Similarly, a prime number (like 257) that is one more than a power of two is called a Fermat prime; the exponent will itself be a power of two. A fraction that has a power of two as its denominator is called a dyadic rational. The numbers that can be represented as sums of consecutive positive integers are called polite numbers; they are exactly the numbers that are not powers of two.
20 | = | 1 | 212 | = | 4,096 | 224 | = | 16,777,216 | 236 | = | 68,719,476,736 | 248 | = | 281,474,976,710,656 | 260 | = | 1,152,921,504,606,846,976 | 272 | = | 4,722,366,482,869,645,213,696 | ||||||
21 | = | 2 | 213 | = | 8,192 | 225 | = | 33,554,432 | 237 | = | 137,438,953,472 | 249 | = | 562,949,953,421,312 | 261 | = | 2,305,843,009,213,693,952 | 273 | = | 9,444,732,965,739,290,427,392 | ||||||
22 | = | 4 | 214 | = | 16,384 | 226 | = | 67,108,864 | 238 | = | 274,877,906,944 | 250 | = | 1,125,899,906,842,624 | 262 | = | 4,611,686,018,427,387,904 | 274 | = | 18,889,465,931,478,580,854,784 | ||||||
23 | = | 8 | 215 | = | 32,768 | 227 | = | 134,217,728 | 239 | = | 549,755,813,888 | 251 | = | 2,251,799,813,685,248 | 263 | = | 9,223,372,036,854,775,808 | 275 | = | 37,778,931,862,957,161,709,568 | ||||||
24 | = | 16 | 216 | = | 65,536 | 228 | = | 268,435,456 | 240 | = | 1,099,511,627,776 | 252 | = | 4,503,599,627,370,496 | 264 | = | 18,446,744,073,709,551,616 | 276 | = | 75,557,863,725,914,323,419,136 | ||||||
25 | = | 32 | 217 | = | 131,072 | 229 | = | 536,870,912 | 241 | = | 2,199,023,255,552 | 253 | = | 9,007,199,254,740,992 | 265 | = | 36,893,488,147,419,103,232 | 277 | = | 151,115,727,451,828,646,838,272 | ||||||
26 | = | 64 | 218 | = | 262,144 | 230 | = | 1,073,741,824 | 242 | = | 4,398,046,511,104 | 254 | = | 18,014,398,509,481,984 | 266 | = | 73,786,976,294,838,206,464 | 278 | = | 302,231,454,903,657,293,676,544 | ||||||
27 | = | 128 | 219 | = | 524,288 | 231 | = | 2,147,483,648 | 243 | = | 8,796,093,022,208 | 255 | = | 36,028,797,018,963,968 | 267 | = | 147,573,952,589,676,412,928 | 279 | = | 604,462,909,807,314,587,353,088 | ||||||
28 | = | 256 | 220 | = | 1,048,576 | 232 | = | 4,294,967,296 | 244 | = | 17,592,186,044,416 | 256 | = | 72,057,594,037,927,936 | 268 | = | 295,147,905,179,352,825,856 | 280 | = | 1,208,925,819,614,629,174,706,176 | ||||||
29 | = | 512 | 221 | = | 2,097,152 | 233 | = | 8,589,934,592 | 245 | = | 35,184,372,088,832 | 257 | = | 144,115,188,075,855,872 | 269 | = | 590,295,810,358,705,651,712 | 281 | = | 2,417,851,639,229,258,349,412,352 | ||||||
210 | = | 1,024 | 222 | = | 4,194,304 | 234 | = | 17,179,869,184 | 246 | = | 70,368,744,177,664 | 258 | = | 288,230,376,151,711,744 | 270 | = | 1,180,591,620,717,411,303,424 | 282 | = | 4,835,703,278,458,516,698,824,704 | ||||||
211 | = | 2,048 | 223 | = | 8,388,608 | 235 | = | 34,359,738,368 | 247 | = | 140,737,488,355,328 | 259 | = | 576,460,752,303,423,488 | 271 | = | 2,361,183,241,434,822,606,848 | 283 | = | 9,671,406,556,917,033,397,649,408 |
One can see that starting with 2 the last digit is periodic with period 4, with the cycle 2 4 8 6, and starting with 4 the last two digits are periodic with period 20. These patterns are generally true of any power, with respect to any base. The pattern continues, of course, where each pattern has starting point 2k length the multiplicative order of 2 modulo 5k.
The first few powers of 210 are a little more than those of 1000:
210 | = | 1 024 | ≈ 10001 | (2.3% deviation) |
220 | = | 1 048 576 | ≈ 10002 | (4.6% deviation) |
230 | = | 1 073 741 824 | ≈ 10003 | (6.9% deviation) |
240 | = | 1 099 511 627 776 | ≈ 10004 | (9.1% deviation) |
250 | = | 1 125 899 906 842 624 | ≈ 10005 | (11.2% deviation) |
260 | = | 1 152 921 504 606 846 976 | ≈ 10006 | (13.3% deviation) |
270 | = | 1 180 591 620 717 411 303 424 | ≈ 10007 | (15.3% deviation) |
See also IEEE 1541-2002.
Because data (specifically integers) and the addresses of data are stored using the same hardware, and the data is stored in one or more octets (23), double exponentials of two are common. For example,
Several of these numbers represent the number of values representable using common computer data types. For example, a 32-bit word consisting of 4 bytes can represent 232 distinct values, which can either be regarded as mere bit-patterns, or are more commonly interpreted as the unsigned numbers from 0 to 232 − 1, or as the range of signed numbers between −231 and 231 − 1. Also see tetration and lower hyperoperations. For more about representing signed numbers see two's complement.
int
variable in the Java and C# programming languages.Cardinal
or Integer
variable in the Pascal programming language.The binary representation of integers makes it possible to apply a very fast test to determine whether a given positive integer x is a power of two:
(x & (x − 1)) equals zero.
where & is a bitwise logical AND operator. Note that if x is 0, this incorrectly indicates that 0 is a power of two, so this check only works if x > 0.
Examples:
|
|
1…111…1 |
|
|
1…111…111…1 | |
|
|
0…010…0 |
|
|
0…010…010…0 | |
|
|
0…001…1 |
|
|
0…010…001…1 | |
|
|
0…000…0 |
|
|
0…010…000…0 |
Proof of Concept:
Proof uses the technique of contrapositive.
Statement, S: If x&(x-1) = 0 and x is an integer greater than zero then x = 2k (where k is an integer such that k>=0).
Concept of Contrapositive:
S1: P -> Q is same as S2: ~Q -> ~P
In above statement S1 and S2 both are contrapositive of each other.
So statement S can be re-stated as below
S': If x is a positive integer and x ≠ 2k (k is some non negative integer)then x&(x-1) ≠ 0
Proof:
If x ≠ 2k then at least two bits of x are set.(Let's assume m bits are set.)
Now, bit pattern of x - 1 can be obtained by inverting all the bits of x up to first set bit of x(starting from LSB and moving towards MSB, this set bit inculsive).
Now, we observe that expression x & (x-1) has all the bits zero up to the first set bit of x and since x & (x-1) has remaining bits same as x and x has at least two set bits hence predicate x & (x-1) ≠ 0 is true.
As a generalization of the above, the binary representation of integers makes it possible to calculate the modulos of a non-negative integer (x) with a power of two (y) very quickly:
(x & (y − 1)).
where & is a bitwise logical AND operator. This bypasses the need to perform an expensive division. This is useful if the modulo operation is a significant part of the performance critical path as this can be much faster than the regular modulo operator.
The following formula finds the nearest power of two, on a logarithmic scale, of a given value Failed to parse (Missing texvc executable; please see math/README to configure.): x > 0
Computer pseudocode: <source lang="c">pot = 2^roundup(log2(npot));</source>
This should be distinguished from the nearest power of two on a linear scale. For example, 23 is nearer to 16 than it is to 32, but the previous formula rounds it to 32, corresponding to the fact that 23/16=1.4375, larger than 32/23=1.3913.
If Failed to parse (Missing texvc executable; please see math/README to configure.): \scriptstyle x
is an integer value, following steps can be taken to find the nearest value (with respect to actual value rather than the binary logarithm) in a computer program:
, that is set (1) from the binary representation of Failed to parse (Missing texvc executable; please see math/README to configure.): \scriptstyle x , when Failed to parse (Missing texvc executable; please see math/README to configure.): \scriptstyle k \,=\, 0
means the least significant bit
are zero. Then, if bit Failed to parse (Missing texvc executable; please see math/README to configure.): \scriptstyle k-1 is zero, the result is Failed to parse (Missing texvc executable; please see math/README to configure.): \scriptstyle 2^k
. Otherwise the result is Failed to parse (Missing texvc executable; please see math/README to configure.): \scriptstyle 2^{k+1} .
A C++ version of this code for the unsigned integer type T would be: <source lang="cpp"> template <class T> T nearestpower2(T v) {
int k; if (v == 0) return 1; for (k = sizeof(T) * 8 - 1; ((static_cast<T>(1U) << k) & v) == 0; k--); if (((static_cast<T>(1U) << (k - 1)) & v) == 0) return static_cast<T>(1U) << k; return static_cast<T>(1U) << (k + 1);
} </source>
Sometimes it is desired to find the least power of two that is not less than a particular integer, n. The pseudocode for an algorithm to compute the next-higher power of two is as follows. If the input is a power of two it is returned unchanged.[4]
<source lang="c"> n = n - 1; n = n | (n >> 1); n = n | (n >> 2); n = n | (n >> 4); n = n | (n >> 8); n = n | (n >> 16); ... n = n | (n >> (bitspace / 2)); n = n + 1; </source>
Where | is a binary or operator, >> is the binary right-shift operator, and bitspace is the size (in bits) of the integer space represented by n. For most computer architectures, this value is either 8, 16, 32, or 64. This operator works by setting all bits on the right-hand side of the most significant flagged bit to 1, and then incrementing the entire value at the end so it "rolls over" to the nearest power of two. An example of each step of this algorithm for the number 2689 is as follows:
Binary representation | Decimal representation |
---|---|
0101010000001 | 2,689 |
0101010000000 | 2,688 |
0111111000000 | 4,032 |
0111111110000 | 4,080 |
0111111111111 | 4,095 |
1000000000000 | 4,096 |
As demonstrated above, the algorithm yields the correct value of 4,096. The nearest power to 2,689 happens to be 2,048; however, this algorithm is designed only to give the next highest power of two to a given number, not the nearest.
A C++ version of this code for the signed integer type T would be: <source lang="cpp"> template <class T> T nexthigher(T k) {
k--; for (int i=1; i<sizeof(T)*CHAR_BIT; i<<=1) k = k | k >> i; return k+1;
} </source>
For unsigned integers, the code would be: <source lang="cpp"> template <class T> T nexthigher(T k) {
if (k == 0) return 1; k--; for (int i=1; i<sizeof(T)*CHAR_BIT; i<<=1) k = k | k >> i; return k+1;
} </source>
Note: CHAR_BIT is defined in <climits>
The number of vertices of an n-dimensional hypercube is 2n. Similarly, the number of (n − 1)-faces of an n-dimensional cross-polytope is also 2n and the formula for the number of x-faces an n-dimensional cross-polytope has is Failed to parse (Missing texvc executable; please see math/README to configure.): \scriptstyle 2^x{n\choose x} .
The sum of the reciprocals of the powers of two is 2. The sum of the reciprocals of the squared powers of two is 1⅓.
Power of two or variations may refer to:
Swamp Ophelia is the fifth studio album by the Indigo Girls, released in 1994.
The Allmusic review noted that "Amy Ray and Emily Saliers continue to hone their signature lush melodies .... The Indigo Girls are no longer afraid to hit upon past relationships and personal emotion. Saliers and Ray's incredible harmonies are most stylish .... [b]ut the duo also move beyond the sweet and tender by dipping into darker realms .... This album is another humanistic effort from the Indigo Girls' deep and indwelling passions and ideas."
In 2009, Michael Feinstein covered "The Power of Two" in his nightclub act and studio album The Power of Two with Cheyenne Jackson, using the song's title for both the album and act as well. In 2010, Filipino pop rock singer Aiza Seguerra also covered the song. In 2012, Filipino acoustic pop singer Nyoy Volante and his acoustic band, "Rhythmic Circle" also covered the song on the OPM pop compilation album 90's Music Comes Alive.
Now the parking lot is empty
Everyone's gone someplace
I pick you up and in the trunk I've packed
A cooler and a two day suitcase
'Cause there's a place we like to drive
Way out in the country
And five miles out of the city limit we're singin'
And your hand's upon my leg
So we're ok, we're fine
Baby I'm here to stop your crying
Chase all the ghosts from your head
I'm stronger than the monster beneath your bed
Smarter than the tricks played on your heart
Look at them together then we'll take them apart
Adding up the total of a love that's true
Multiply life by the power of two
You know the things that I am afraid of
I'm not afraid to tell
And if we ever leave a legacy
It's that we loved each other well
Because I've seen the shadows of so many people
Still trying on the treasures of youth
But a road that fancy and fast ends in a fatal crash
And I'm glad we got off to tell you the truth
So we're ok, we're fine
Baby I'm here to stop your crying
Chase all the ghosts from your head
I'm stronger than the monster beneath your bed
Smarter than the tricks played on your heart
Look at them together then we'll take them apart
Adding up the total of a love that's true
Multiply life by the power of two
All the shiny little trinkets of temptation
Something new instead of something old
All you gotta do is scratch beneath the surface
And it's fool's gold, fool's gold, fool's gold
Now we're talking about a difficult thing
Your eyes are getting wet
I took us for better and I took us for worse
And don't you ever forget it
Now there's steel bars between me and a promise
Suddenly bend with ease
The closer I'm bound in love to you
The closer I am to free
So we're ok, we're fine
Baby I'm here to stop your crying
Chase all the ghosts from your head
I'm stronger than the monster beneath your bed
Smarter than the tricks played on your heart
Look at them together then we'll take them apart
Adding up the total of a love that's true
Multiply life by the power of two