计算机组成原理[1]二进制

二进制

我们常用的计数方式是十进制,这可能来源于我们拥有10根手指。在计算机界,由于电子管只有开和关两种状态,用以表示十进制比较复杂。于是采用二进制进行计算。

二进制遵循逢二进一的原理,每一位只有 0 和 1 两个数字,这样的一位称为 binary digit (二进制位), 缩写为 bit(比特)。是计算机的最小单位。

由于二进制每一位包含的信息较少,所以二进制只能使用更多位数来表示其他进制的信息。

比如二进制的10表示十进制的2,二进制的100表示十进制的4.

二进制与十进制正整数的转换

由于二进制和十进制不存在倍数关系,所以转换时需要一定的计算。

二进制转十进制

任何进制都遵循以下规律:

x进制在y位上数值为z,z占权重为:

1
z * x ^ (y - 1)

而整个数字就是所有位的权重和。

比如十进制数345就是由以下公式计算而来:

1
3 * 10 ^ 2 + 4 * 10 ^ 1 + 5 * 10 ^ 0

同理,二进制数我们也可以使用按位计算并求和的方式转换为十进制。二进制有以下特点:

  1. 进制x = 2

  2. z等于1或者0 (为0时可以忽略不计,为1时权重等于 2 ^ (y - 1))

所以二进制数1001011转换为10进制的计算如下:

1
2 ^ 6 + 2 ^ 3 + 2 ^ 1 + 2 ^ 0

最终得到: 75

十进制转二进制

十进制转二进制使用如下计算方式:

1
不断将数字除以2,若余数为0,则在高位添加0,若余数为1,则在高位添加1

这是由于,任何一个十进制的正整数都可以表示为多个底数为2,指数不同的幂的和:

1
2 ^ x + 2 ^ y + ... + 2 ^ z

在不断除以2的过程中,会将低位计算并剔除。

除到第2 ^ y 时,此时公式为

1
2 ^ x / 2 ^ y + ... + 2 ^ y / 2 ^ y

由于 2 ^ (x - y) 肯定为偶数, 而 2 ^ y / 2 ^ y 为1,此时,若存在 2 ^ y这个加数,则余数为1,不存在则余数为0。