为什么计算中的一切都以 2 的 x 次方为基数?

为什么计算中的一切都以 2 的 x 次方为基数?
  1. 闪存驱动器大小(按 2 的幂增加)
  2. RAM 大小(按 2 的幂增加)
  3. 32 位、64 位、128 位(按 2 的幂增加)等...

有人能解释一下吗,我认为这可能与设备兼容性和二进制代码有关,在这种情况下你能解释为什么这些设备必须遵循这个二进制代码序列吗?

另外,计算机有多少个手指?

答案1

计算机中使用的数字电子元件有两种状态:开启和关闭。因此,内存中的数字存储由元素集合组成,每个元素都处于开启或关闭状态。

因此,一个元素只能表示数字 0 和 1(两个值)。
如果将其中两个元素组合起来,现在就可以表示 2 的 2 次方(四个)数字 0…3。

  • 关闭,关闭 = 0
  • 关,开 = 1
  • 开,关 = 2
  • 开,开 = 3

如果有三个元素,则可以表示二的三次方(八)个数字 0…7。

  • 关闭,关闭,关闭 = 0
  • 关,关,开 = 1
  • 关,开,关 = 2
  • 关,开,开 = 3
  • 开,关,关 = 4
  • 开,关,开 = 5
  • 开,开,关 = 6
  • 开,开,开 = 7

等等。

该元件可能是开关晶体管或处于开启或关闭状态的等效物,也可能是硬盘表面的一小块区域,其磁化方向与旋转方向平行或垂直(两种状态)。

因此一切事物都自然地按照二的幂排列。

我们只使用 10 的幂,因为我们有十个手指(包括拇指),而计算机没有。

答案2

我首先回答你的最后一个问题:

另外,计算机有多少个手指?

计算机只有一根手指...然而,这并不能说明全部情况,因为计算机通常还具有很多手数(在大多数计算机中为 32 或 64)。


根据定义,任何事物数字的“是一种使用离散(不连续)值的数据技术。”我们可以通过使用晶体管作为数字开关来表示现实世界电子设备中的离散值。晶体管在开关模式下使用时,可以让电流流动或不流动。因此,我们可以将晶体管的输出表示为接地(无连接,0V)或电源电压(或一定百分比) - 相当于来自布尔逻辑

为了使用这些离散状态来表示数值,我们看到每个晶体管可以表示两个离散状态 - 或从 0 到 1 的数字。这是基数 2数字系统,它遵循与十进制系统相同的步骤(以及三进制、四进制、五进制、十六进制等等)。如果我们用这些不同的数字系统来表示数字 52,其中每个数字的范围可以是从 0 到 N-1, 在哪里N 是数系的基数, 我们有:

Base 2:           1   1   0   1   0   0                 110100_2
                 2^5 2^4 2^3 2^2 2^1 2^0

Base 4:                       3   1   0                    310_4
                             4^2 4^1 4^0

Base 10:                         5    2
                               10^1 10^0                   52_10

Base 16:                         3    4                    34_16
                               16^1 16^0

现在,就二进制数而言,你可以看到,我们可以通过添加更多数字来表示指数级更大的数字(就像其他数字系统一样),或者在数字计算机的情况下,通过添加更多分立晶体管与系统并行。这就是为什么 32 位(无符号)整数可以存储从 0 到 (2^32) - 1 的任何数字。

再次,由于我们只能用电子方式表示两种离散状态,因此我们表示更多状态的唯一方法是用更多“开-关”状态扩展这些状态,或者并行添加更多二进制数字。这就是为什么计算机世界中的一切都是基于 2 的幂的原因 - 这是我们用计算机表示值的唯一方法。


需要注意的是,这与模拟计算机,实际上可以有无限多个状态值。这会将精度误差引入值中,这是不可避免的 - 这也是为什么数字计算机更受欢迎的原因(信息熵更少,存储、压缩、加密方式更好,并且不会出现信息退化)。

还应该注意的是,我们使用 2 进制数,因为我们的晶体管只能有两种状态。如果我们能够制造三态晶体管(我不是如果我们在这里讨论三态逻辑(它只是使用高阻抗状态)或四态晶体管,那么我们肯定可以使用不同的数字系统来创建计算机。

然而,二进制是“久经考验的”,使用不同的数字系统除了可以可能需要使用更少的离散组件来存储尽可能多的值。例如,当我们将 52 转换为 4 进制、10 进制和 16 进制等价物时,您会发现,随着数字系统的基数增加,保存该数字所需的单个数字的数量自然会减少。

然而,晶体管又便宜又小又微型,所以我们可以毫无问题地表示非常大的值(这也是为什么我们已经转向 64 位计算- 我们可以在更短的时间内对更大的数字进行更多的运算)。

答案3

可能主要原因是在硬件层面上操作最容易。用电源开或关(或低功率与全功率)表示两种状态很容易,但用 10 种不同的电压水平来表示并正确解释它们则比较困难。

接下来是逻辑组件:像门这样的组件(NOT、AND、OR、XOR、NAND、NOR)很容易理解和使用,并且可以组合起来生成更高阶的组件(例如触发器或最极端的 CPU)。这背后的数学很好理解(布尔代数)。

有使用十进制(通常使用的以“十”为基础的系统)的计算机,其中最著名的是埃尼阿克但它们可能被证明过于复杂和低效。

答案4

数据以 BIT(二进制数字)的形式存储。1
个二进制数字可以有 2 个值之一,0 或 1。2 个值为 2^1

2 位(位 0 和位 1)可以保存 4 个值 00 01 10 11,是一位数的两倍。

3 位可以容纳 2 位所能容纳的两倍。因为当第三位为 0 时,其余 2 位有 4 个值,而当第三位为 1 时,其余 2 位有 4 个值。因此,对于 3 位,我们得到 8 个值。2^3=8

2^位数=值的数量。

并非只有按该模式工作的位。base^n

小数位数,3位小数能得到多少个十进制数?10^3=1000 0 至 999

1-999 是 999 个值。0 是另一个值。也就是 1000 个值。0-999。

因为要记住,1 到 10(含)之间有多少个数字?10。0 到 10(含)之间有多少个值,嗯,有 11 个!

2 位保存 4 个值,代表数字 0 到 3。就像 2 个十进制数字保存 100 个值 0..99

相关内容