# History UsefulNotes / PowersOfTwoMinusOne

Go To

Computers also have a limit to the maximum size a variable can be. It's not a hard limit, but using bigger numbers slows down computation considerably. Whenever you hear about the "number of bits" of a video game console (e.g., the UsefulNotes/NintendoEntertainmentSystem being "8-bit"), that's what they're referring to. The NES has an 8-bit data bus; it can only move 8 bits of data around at a time. If it has to move any more, it has to do it in more than one cycle. In technical terms, this is called "word size."

to:

Computers also have a limit to the maximum size a variable can be. It's not a hard limit, but using bigger numbers slows down computation considerably. Whenever you hear about the "number of bits" of a video game console (e.g., the UsefulNotes/NintendoEntertainmentSystem being "8-bit"), that's what they're referring to. The NES has an 8-bit data bus; it can only move 8 bits of data around at a time. If it has to move any more, it has to do it in more than one cycle.cycle (and if it has to do math on them, it needs to CarryTheOne). In technical terms, this is called "word size."

* '''12 bits''' can hold a value as high as 4095. Some NES games like ''VideoGame/FinalFantasyI'' used hacks to get values this large.

to:

* '''12 bits''' can hold a value as high as 4095. Some NES games like ''VideoGame/FinalFantasyI'' and ''VideoGame/{{Rygar}}'' used hacks to get values this large.

* '''128 bits''' can hold a value as high as 340.2 undecillion (or 3.4×10[[superscript:38]]). Computers usually do not have 128-bit general-purpose registers, but the [[UsefulNotes/PlayStation3 PS3]]'s Cell, the UsefulNotes/Xbox360's CPU, and modern x64 [=CPUs=] (used both in [[UsefulNotes/IBMPersonalComputer [=PCs=]]] and [[UsefulNotes/AppleMacintosh Macs]]) do have 128-bit vector registers (holding 4 32-bit values). These are used for [[VectorUnit vector math]].

to:

* '''128 bits''' can hold a value as high as 340.2 undecillion (or 3.4×10[[superscript:38]]). Computers usually do not have 128-bit general-purpose registers, but the [[UsefulNotes/PlayStation3 PS3]]'s Cell, the UsefulNotes/Xbox360's CPU, and modern x64 [=CPUs=] (used both in [[UsefulNotes/IBMPersonalComputer [=PCs=]]] and [[UsefulNotes/AppleMacintosh Macs]]) do have 128-bit vector registers (holding 4 32-bit values). These are used for [[VectorUnit [[UsefulNotes/FlynnsTaxonomy vector math]].

** That's a part of the reasoning for the whole concept of "magic numbers" in engineering. When you are making something you need to decide on some properties (like plank size or ceiling height, for example) anyway, so why not use the ones that someone [[FollowTheLeader has already used before]]? And then it happens that the similar sizes allow for compatibility and interoperability, it becomes a self-reinforcing convention, and we all end up with 2×4's[[note]]Which, it should be noted, are [[NonIndicativeName actually 1½×3½]]. Aren't standards fun?[[/note]]. The same logic applies to the programming too.

to:

** That's a part of the reasoning for the whole concept of "magic numbers" in engineering. When you are making something you need to decide on some properties (like plank size or ceiling height, for example) anyway, so why not use the ones that someone [[FollowTheLeader has already used before]]? And then it happens that the similar sizes allow for compatibility and interoperability, it becomes a self-reinforcing convention, and we all end up with 2×4's[[note]]Which, 2×4's[[note]]Dimensional lumber, used in United States and Canada. They are named after the lumber's profile thickness, in inches. 2×4's, it should be noted, are [[NonIndicativeName actually 1½×3½]]. Aren't standards fun?[[/note]]. The same logic applies to the programming too.

* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The UsefulNotes/{{Nintendo 64}}, UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony UsefulNotes/PlayStation2, and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).

to:

* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The UsefulNotes/{{Nintendo 64}}, UsefulNotes/GameCube[[note]]Although UsefulNotes/GameCube,[[note]]Although with some 32-bit components[[/note]], components[[/note]] Sony UsefulNotes/PlayStation2, and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).

Computers also have a limit to the maximum size a variable can be. It's not a hard limit, but using bigger numbers slows down computation considerably. Whenever you hear about the "number of bits" of a video game console (e.g., the NintendoEntertainmentSystem being "8-bit"), that's what they're referring to. The NES has an 8-bit data bus; it can only move 8 bits of data around at a time. If it has to move any more, it has to do it in more than one cycle. In technical terms, this is called "word size."

to:

Computers also have a limit to the maximum size a variable can be. It's not a hard limit, but using bigger numbers slows down computation considerably. Whenever you hear about the "number of bits" of a video game console (e.g., the NintendoEntertainmentSystem UsefulNotes/NintendoEntertainmentSystem being "8-bit"), that's what they're referring to. The NES has an 8-bit data bus; it can only move 8 bits of data around at a time. If it has to move any more, it has to do it in more than one cycle. In technical terms, this is called "word size."

* Floating point. This works like scientific notation; one bit is used to store the sign, some number of bits (called the mantissa) are used to store the number to the right of the decimal point, and the remaining bits (called the exponent) are, predictably, used to store the power of 2 to multiply by. (We use 2 instead of 10 because, again, computers work in binary.) It should be noted that this is a gross oversimplification.

to:

* Floating point. This works like scientific notation; one bit is used to store the sign, some number of bits (called the mantissa) are used to store the number to the right of the decimal point, and the remaining bits (called the exponent) are, predictably, used to store the power of 2 to multiply by. (We use 2 instead of 10 because, again, computers work in binary.) It should be noted that this is a gross oversimplification.oversimplification -- if you've got ten minutes to kill and like ''VideoGame/SuperMario64'', [[https://www.youtube.com/watch?v=9hdFG2GcNuA a speedrunner for that game goes into more detail]].

* '''128 bits''' can hold a value as high as 340.2 undecillion (or 3.4×10[[superscript:38]]). Computers usually do not have 128-bit general-purpose registers, but the [[UsefulNotes/PlayStation3 PS3]]'s Cell, the [[UsefulNotes/Xbox360]]'s CPU, and modern x64 [=CPUs=] (used both in [[UsefulNotes/IBMPersonalComputer [=PCs=]]] and [[UsefulNotes/AppleMacintosh Macs]]) do have 128-bit vector registers (holding 4 32-bit values). These are used for [[VectorUnit vector math]].

to:

* '''128 bits''' can hold a value as high as 340.2 undecillion (or 3.4×10[[superscript:38]]). Computers usually do not have 128-bit general-purpose registers, but the [[UsefulNotes/PlayStation3 PS3]]'s Cell, the [[UsefulNotes/Xbox360]]'s UsefulNotes/Xbox360's CPU, and modern x64 [=CPUs=] (used both in [[UsefulNotes/IBMPersonalComputer [=PCs=]]] and [[UsefulNotes/AppleMacintosh Macs]]) do have 128-bit vector registers (holding 4 32-bit values). These are used for [[VectorUnit vector math]].

* '''128 bits''' can hold a value as high as 340.2 undecillion (or 3.4×10[[superscript:38]]). Computers usually do not have 128-bit general-purpose registers, but the [[UsefulNotes/PlayStation3 PS3]]'s Cell, the X-Box 360's CPU, and modern x64 [=CPUs=] (used both in [[UsefulNotes/IBMPersonalComputer [=PCs=]]] and [[UsefulNotes/AppleMacintosh Macs]]) do have 128-bit vector registers (holding 4 32-bit values). These are used for [[VectorUnit vector math]].

Note that in addition to the above, most recent processors have additional "vector" processors for dealing with multiple calculations in parallel; these have so far been up to 256 bits wide. Also floating point calculations are often done at different sizes.

to:

* '''128 bits''' can hold a value as high as 340.2 undecillion (or 3.4×10[[superscript:38]]). Computers usually do not have 128-bit general-purpose registers, but the [[UsefulNotes/PlayStation3 PS3]]'s Cell, the X-Box 360's [[UsefulNotes/Xbox360]]'s CPU, and modern x64 [=CPUs=] (used both in [[UsefulNotes/IBMPersonalComputer [=PCs=]]] and [[UsefulNotes/AppleMacintosh Macs]]) do have 128-bit vector registers (holding 4 32-bit values). These are used for [[VectorUnit vector math]].

Note that in addition to the above, most recent processors have additional "vector" processors for dealing with multiple calculations in parallel; these have so far been up to 256 bits wide. Also Also, floating point calculations are often done at different sizes.

* '''32 bits''' can hold a value as high as 4,294,967,295. The UsefulNotes/SegaSaturn and [[UsefulNotes/SegaDreamcast Dreamcast]], Sony UsefulNotes/{{PlayStation}}, Microsoft UsefulNotes/{{XBox}} and the UsefulNotes/{{Wii}} are all 32-bit. So are desktop [=PCs=] made from 1987 to 2007. Most smartphones are 32-bit, with 64-bit phones starting to trickle out in 2013 and 2014.
* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The UsefulNotes/{{Nintendo64}}, UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony UsefulNotes/PlayStation2, and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).
* '''128 bits''' can hold a value as high as 340.2 undecillion (or 3.4×10[[superscript:38]]). Computers usually do not have 128-bit general-purpose registers, but the [[UsefulNotes/PlayStationThree PS3]]'s Cell, the X-Box 360's CPU, and modern x64 [=CPUs=] (used both in [[UsefulNotes/IBMPersonalComputer [=PCs=]]] and [[UsefulNotes/AppleMacintosh Macs]]) do have 128-bit vector registers (holding 4 32-bit values). These are used for [[VectorUnit vector math]].

to:

* '''32 bits''' can hold a value as high as 4,294,967,295. The UsefulNotes/SegaSaturn and [[UsefulNotes/SegaDreamcast Dreamcast]], Sony UsefulNotes/{{PlayStation}}, Microsoft UsefulNotes/{{XBox}} UsefulNotes/{{Xbox}} and the UsefulNotes/{{Wii}} are all 32-bit. So are desktop [=PCs=] made from 1987 to 2007. Most smartphones are 32-bit, with 64-bit phones starting to trickle out in 2013 and 2014.
* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The UsefulNotes/{{Nintendo64}}, UsefulNotes/{{Nintendo 64}}, UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony UsefulNotes/PlayStation2, and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).
* '''128 bits''' can hold a value as high as 340.2 undecillion (or 3.4×10[[superscript:38]]). Computers usually do not have 128-bit general-purpose registers, but the [[UsefulNotes/PlayStationThree [[UsefulNotes/PlayStation3 PS3]]'s Cell, the X-Box 360's CPU, and modern x64 [=CPUs=] (used both in [[UsefulNotes/IBMPersonalComputer [=PCs=]]] and [[UsefulNotes/AppleMacintosh Macs]]) do have 128-bit vector registers (holding 4 32-bit values). These are used for [[VectorUnit vector math]].

* As a {{Cap}}. Programming for older systems is really ''really'' hard; these systems were relatively good at graphics processing, but very bad at calculations, so every CPU cycle saved was a big deal.[[note]]UsefulNotes/{{Atari 2600}} was hit the hardest: it had ''no'' UsefulNotes/VideoRAM, so programmers had to create the picture by timely manipulation of the graphic output registers, but as it also had no interrupt lines in the {{CPU}}, this was possible only by the careful timing of the program itself and inserting graphical output commands into the correct places.[[/note]] If you cap a value to the actual limit of your variable, you can enforce the cap with a "did previous instruction overflow" test, which is usually faster than a "is X greater than Y" test (the latter often involves hidden subtraction, even on newer processors).

to:

* As a {{Cap}}. Programming for older systems is really ''really'' hard; these systems were relatively good at graphics processing, but very bad at calculations, so every CPU cycle saved was a big deal.[[note]]UsefulNotes/{{Atari 2600}} [[note]]UsefulNotes/{{Atari|2600}} was hit the hardest: it had ''no'' UsefulNotes/VideoRAM, so programmers had to create the picture by timely manipulation of the graphic output registers, but as it also had no interrupt lines in the {{CPU}}, this was possible only by the careful timing of the program itself and inserting graphical output commands into the correct places.[[/note]] If you cap a value to the actual limit of your variable, you can enforce the cap with a "did previous instruction overflow" test, which is usually faster than a "is X greater than Y" test (the latter often involves hidden subtraction, even on newer processors).

** That's a part of the reasoning for the whole concept of "magic numbers" in engineering. When you are making something you need to decide on some properties (like plank size or ceiling height, for example) anyway, so why not use the ones that someone [[FollowTheLeader has already used before]]? And then it happens that the similar sizes allow for compatibility and interoperability, it becomes a self-reinforcing convention, and we all end up with 2×4's[[note]]Which, it should be noted, are [[MindScrew actually 1½×3½]]. Aren't standards fun?[[/note]]. The same logic applies to the programming too.

to:

** That's a part of the reasoning for the whole concept of "magic numbers" in engineering. When you are making something you need to decide on some properties (like plank size or ceiling height, for example) anyway, so why not use the ones that someone [[FollowTheLeader has already used before]]? And then it happens that the similar sizes allow for compatibility and interoperability, it becomes a self-reinforcing convention, and we all end up with 2×4's[[note]]Which, it should be noted, are [[MindScrew [[NonIndicativeName actually 1½×3½]]. Aren't standards fun?[[/note]]. The same logic applies to the programming too.

* '''32 bits''' can hold a value as high as 4,294,967,295. The UsefulNotes/SegaSaturn and UsefulNotes/{{Dreamcast}}, Sony UsefulNotes/{{PlayStation}}, Microsoft UsefulNotes/{{XBox}} and the UsefulNotes/{{Wii}} are all 32-bit. So are desktop [=PCs=] made from 1987 to 2007. Most smartphones are 32-bit, with 64-bit phones starting to trickle out in 2013 and 2014.

to:

* '''32 bits''' can hold a value as high as 4,294,967,295. The UsefulNotes/SegaSaturn and UsefulNotes/{{Dreamcast}}, [[UsefulNotes/SegaDreamcast Dreamcast]], Sony UsefulNotes/{{PlayStation}}, Microsoft UsefulNotes/{{XBox}} and the UsefulNotes/{{Wii}} are all 32-bit. So are desktop [=PCs=] made from 1987 to 2007. Most smartphones are 32-bit, with 64-bit phones starting to trickle out in 2013 and 2014.

----

to:

----

However, that's not the end of the story. All of those values assume that the variable is unsigned, meaning it can't hold a negative number. Signed numbers essentially throw away one bit in order to be able to store both positive ''and'' negative numbers. Zero is taken to be the first "positive" number, whereas negative numbers start at -1, which makes the negative limit higher (absolutely speaking). This effectively reduces by half the maximum number that the value can hold for the sake of representing negative numbers. Here are some revised tables:

to:

However, that's not the end of the story. All of those values assume that the variable is unsigned, meaning it can't hold a negative number. Signed numbers essentially throw away sacrifice one bit in order to be able to store both positive ''and'' negative numbers. Zero is taken to be the first "positive" number, whereas negative numbers start at -1, which makes the negative limit higher (absolutely speaking). This effectively reduces by half the maximum number that the value can hold for the sake of representing negative numbers. Here are some revised tables:

* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The UsefulNotes/{{Nintendo64}}, UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony [[UsefulNotes/PlayStationTwo PlayStation 2]], and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).

to:

* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The UsefulNotes/{{Nintendo64}}, UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony [[UsefulNotes/PlayStationTwo PlayStation 2]], UsefulNotes/PlayStation2, and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).

* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The UsefulNotes/Nintendo64, UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony [[UsefulNotes/PlayStationTwo PlayStation 2]], and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).

to:

* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The UsefulNotes/Nintendo64, UsefulNotes/{{Nintendo64}}, UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony [[UsefulNotes/PlayStationTwo PlayStation 2]], and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).

* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The [[UsefulNotes/Nintendo64 Nintendo 64]], UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony [[UsefulNotes/PlayStationTwo PlayStation 2]], and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).

to:

* '''64 bits''' can hold a value as high as 18.4 quintillion (or 1.84×10[[superscript:19]]). The [[UsefulNotes/Nintendo64 Nintendo 64]], UsefulNotes/Nintendo64, UsefulNotes/GameCube[[note]]Although with some 32-bit components[[/note]], Sony [[UsefulNotes/PlayStationTwo PlayStation 2]], and modern desktop [=PCs=] are all 64-bit, with 64-bit operating systems becoming rather commonplace in 2010 (at least, on new computers).

Showing 15 edit(s) of 30

How well does it match the trope?

Example of:

/

Media sources:

/