A Level 计算机科学辅导

A Level 计算机科学辅导:为什么 1 byte = 8 bits? 为什么不是 4 bits, 5 bits, 6 bits?

周志高 提交于 周六, 05/03/2025 - 08:44

实际上电脑一开始确实不是规定 1 byte = 8 bits. 早期电脑有 用 1 byte = 5 bits 的,但是 5 bits 最多只能 有 32 个 addresses, 也就是说最多只能表示 32 个符号。问题是小写英文字母 + 大写英文字母 = 52, 已经超过 32 个符号了,所以 5 bits 不够用,所以就扩展到了 6 bits. 那么就可以有 64 个 addresses, 也就是说可以最多可以表示 64 个符号了。这样可以表示 大小写英文字母加上 0 - 9 这些阿拉伯数字,这样就占掉了 62 个 addresses, 那么只剩下 2 个 addresses了,那么显然不够用来表示标点符号了。所以 6 bits 不够用,要扩展到 7 bits, 这样就可以有 128 个 addresses, 可以表示 128 个符号。早期这么多 addresses 已经够用了。再加多一个 bit, 用来校验数据,就一共有了 8-bit。 这就是 1 byte = 8 bits 的发展史。

A Level 计算机科学辅导:负数的二进制表示

周志高 提交于 周二, 04/29/2025 - 10:01

最简单的做法是将这个负数的相反数,也就是它所对应的正数,的二进制写出来,然后对各个数位的数进行处理,原来是 1 的,改成 0, 原来是 0 的,改成 1, 这样操作得到一个二进制数,再对这个二进制数加 1,即可得到负数的二进制表示。

例如: 将十进制数 - 31 用二进制来表示。

Step 1: 将 - 31 的相反数  31 用二进制来表示,即  00011111.

Step 2: 将 00011111 各个数位进行转换,原来是 0 的换成 1, 原来是 1 的换成 0, 得到 11100000

Step 3: 11100000 + 1 = 11100001, 最后的结果 11100001 转成十进制就 -31.

以上算法的原理在于,假如有一个二进制数 a, 那么对它各个数位上的值做转换,原来是 1 的换成 0, 原来是 0 的换成1, 得到二进制数 b, 那么必然有 a + b = 11111111,将这个二进制转成十进制数,会发现,其结果是 -1. 也就是说 a + b = -1. 也就是说,b = -a - 1. 

那么,令 c = b + 1, 即有 c = -a - 1 + 1 = -a.

这就是以上算法的数学原理。