二进制数概述

众所周知,计算机内部采用二进制来表示和处理数据。这是因为很多理想的物理介质,状态都有二元特性。

  • 磁性物质:有磁性,或无磁性;
  • 电压:高电压,或低电压;
  • 灯泡:亮,或不亮;

由于这样显著的二元特征,采用二进制数系统,也就不奇怪了。在二进制中,只有两个数字 01 ,可以由其中的一种状态来表示。由于二进制中只有两个数字,因此采用逢二进一,可类比十进制中的逢十进一。

二进制

如果我们有一个灯泡,可以规定当它亮时表示 1 ,不亮时表示 0

由此,我们得到一个最小化的整数存储系统。只是它的表示范围有限,只能表示 01

想要表示更多整数,我们需要更多灯泡。先增加一个灯泡试试:

两个灯泡亮灭状态总过有 $2^2=4$ 种组合,因此可以用来表示 4 个数值。我们可以规定:

  • 两个灯泡全灭表示 0
  • 仅右边灯泡亮表示 1
  • 仅左边灯泡亮表示 2
  • 两个灯泡全亮表示 3

不知您发现了没有,右边灯泡代表 1( $2^0$ ),可类比十进制中的个位;左边灯泡代表 2( $2^1$ ),可类比十进制中的十位。只不过十进制中,每一位都是 10n 次幂,而二进制中则是 2n 次幂。

接下来再加一个灯泡,来考察 3 位二进制数中,每一位跟 2 的幂之间的关系:

  • 左边灯泡代表 $2^2$ ,也就是 4
  • 中间灯泡代表 $2^1$ ,也就是 2
  • 右边灯泡代表 $2^0$ ,也就是 1

灯泡亮代表这位为 1 (加上对应幂),灭代表 0 。因此,3 位二进制数可以表示的数字范围是:

  • 灯泡全灭时为最小值: $0\times2^2 + 0\times2^1 + 0\times2^0 = 0$ ;
  • 灯泡全亮时为最小值: $1\times2^2 + 1\times2^1 + 1\times2^0 = 4 + 2 + 1 = 7$ ;

因此,我们可以得出结论:n 位二进制数可以表示 $2^n$ 个数值,以 0 为最小值,则最大值是 $2^n-1$ 。

最后,再考察下 8 位二进制数,进一步加深理解:

  • 可表示 $2^8 = 256$ 个数值;
  • 最小值为: 0
  • 最大值为: $2^8-1 = 255$ ;

由此可见,二进制跟十进制原理是相通的,只不过是进制从 10 变成 2

项目 十进制 二进制
进制 10 2
相邻位相差倍数 10 2
右数第 n 位代表的数值(从 0 开始) $10^n$ $2^n$
个位代表的数值(右数第 0 位) $10^0 = 1$ $2^0 = 1$
百位代表的数值(右数第 0 位) $10^1 = 10$ $2^1 = 2$
千位代表的数值(右数第 0 位) $10^2 = 100$ $2^2 = 4$
n 位数个数 $10^n$ $2^n$
n 位数最大值 $10^n-1$ $2^n-1$

小菜自制计算机】系列文章首发于公众号【小菜学编程】,敬请关注:

【自制计算机】系列文章首发于公众号【小菜学编程】,敬请关注: