阅读 43

第4集 二进制

本集主题:计算机如何存储和表示数字

1. 布尔代数只有两个值,那如何表达更多的东西?

这就需要数学了。 如果想要表示更多的东西,加位数就可以了。

这和十进制一样,十进制有10个数(0到9),要表示大于9的数,加位数就可以了。

二进制也可以这样。 例如:二进制的 101 是十进制的 xxx 为了表示更大的数字,二进制需要加位数即可。

2. 二进制中的一个 1 或者 0 叫一「位」

8位能表示的最小数是0,即00000000(8个0),最大数是255,即11111111(8个1),能表示256个不同的值,即2的8次方。

8位的例子有很多。
例如:8位机、8位图像、8位音乐、8位游戏(只能使用256种颜色) 意思是在计算机里面,大部分操作都是8位8位这样处理的。

8位如此常见,以至于它有专门的名字:字节。1字节 = 8位。

二进制里面,1 千字节 = 2 的 10 次方 = 1024 字节,1000 也是千字节的正确单位,1000 和 1024 都对。

3. 你可能听说过 32 位电脑或者 64 位电脑

意思是处理一块块的数据,每块是 32 位或者 64 位 32 位能表达的最大数是 43 亿左右,也就是 32 个 1 举例:instagram 照片很清晰,他们有上百万中颜色,因为如今都使用 32 位颜色。

4. 不是所有数字都是正数,我们需要有方法表示正数和负数

大部分计算机用第一位表示正负。1 是负,0 是正,用剩下 31 位来表示数字,能表示的数字范围是正 20 亿到负 20 亿, 虽然数字很大,但是有的时候还是不够用。 例如: 全球有 70 亿人口,美国国债近 20 万亿美元 所以,64 位很有用。

5. 计算机必须给内存中的每一个位置,做一个「标记」

这个标记叫“位置”,目的是为了方便存储数据。

6. 浮点数

  1. 除了正数和负数,计算机也要处理非整数,即浮点数,因为小数点可以在数字间浮动;

  2. 表示浮点数的方法,最常见的是 IEEE 754 标准,它用类似科学计数法的方法,来存储十进制值,

例如:625.9 可以写成 0.6259 * 10 ^ 3;
    >注意:这里 . 6259 叫「有效数位」,3 是指数。
复制代码
  1. 在 32 位浮点数中,第 1 位表示数字的正负,接下来 8 位存指数,剩下 23 位存有效位数。

7. 计算机如何表示文字?

  1. 使用数字表示字母,即给字母编号:A是1,B是2,C是3,以此类推。

  2. ASCII, 美国信息交换标准代码,发明于 1963年,是7位代码,足够存储 128 个不同值,可以表示字母之外的大写字母、

小写字母,数字0到9,@这样的符号,以及标点符号。 例如;小写字母a用数字97表示,大写字母A是65,:是58,)是41 甚至还有「换行符」。

  1. 互用性

ASCII 让不同公司制作的计算机,可以交换数据,这种通用交换信息能力叫做「互用性」。
但是有一个限制:它是为英语设计的,即使有一些保留的字符给其他国家「保留使用」,这些保留下来给每个国家自己安排使用的空位,对大部分国家都够用,也有问题。
例如:在土耳其电脑上打开拉脱维亚语写电子邮件,看到的是乱码;随着计算机在亚洲的兴起,这种做法彻底失效了。 中文和日文这样的语言有数千个字符,没有办法使用8位来表示所有字符。

  1. 为了解决这个问题,每个国家都发明了「多字节编码方案」,但是不相互兼容,

所以诞生了「Unicode」,统一所有编码的标准。它设计于 1992 年,用一个统一编码方案解决了不同国家不同标准的问题。 最常见的 unicode 是 16 位的,有超过一百万个位置,对所有语言的每个字符都够用了。

  1. 不管是 ASCII 还是 Unicode,这些标准归根到底是一长串位。
举例:短信、youtube 视频,互联网上的每个网页,甚至操作系统,只不过是一长串0和1。
复制代码
文章分类
代码人生
文章标签