正数
1 个二进制值可以代表 1 个数,我们可以把真和假 ,当做 1 和 0。如果想表示更多东西,加位数就行了。和我们熟悉的十进制一样,十进制只有 10 个数(0到9),要表示大于 9 的数,加位数就行了。二进制也可以这样玩。
拿 263 举例,这个数字 "实际" 代表什么? 2 个 100 ,6 个 10 , 3 个 1 加在一起,就是 263。注意每列有不同的乘数,100, 10, 1,每个乘数都比右边大十倍,因为每列有 10 个可能的数字(0到9),如果超过 9,要在下一列进 1。因此叫 "基于十的表示法" 或十进制。
二进制也一样,只不过是基于 2 而已,因为二进制只有两个可能的数, 1 和 0,意味着每个乘数必须是右侧乘数的两倍,就不是之前的 100, 10, 1,而是 4, 2, 1。拿二进制数 101 举例,意味着有 1个 "4",0个 "2" , 1个 "1",加在一起,得到十进制的 5。
为了表示更大的数字,二进制需要更多位数。拿二进制数 10110111 举例,我们可以用相同的方法转成十进制,1 x 128 ,0 x 64 ,1 x 32 ,1 x 16 , 0 x 8 ,1 x 4 ,1 x 2 ,1 x 1,加起来等于 183。
运算
二进制数的计算也不难,以十进制数 183 加 19 举例,首先 3 9,得到 12,然后位数记作 2,向前进 1,现在算 8 1 1=10,所以位数记作0,再向前进 1,最后 1 1=2,位数记作2,所以和是202。二进制也一样,和之前一样,从个位开始1 1=2,在二进制中也是如此,但二进制中没有 2,所以位数记作 0 ,进 1,就像十进制的例子一样,1 1,再加上进位的1等于 3,用二进制表示是 11。所以位数记作 1,再进 1,以此类推。最后得到这个数字,跟十进制 202 是一样的。
字节
二进制中,一个 1 或 0 叫一"位",上个例子我们用了 8 位 , 8 位能表示的最小数是 0, 8位都是0,最大数是 255,8 位都是 1。能表示 256 个不同的值,2 的 8 次方。你可能听过 8 位机,8 位图像,8 位音乐,意思是计算机里大部分操作都是 8 位 8 位这样处理的。但 256 个值不算多,意味着 8位游戏只能用 256 种颜色。
8 位是如此常见,以至于有专门的名字:字节。1 字节 = 8 位 ,如果有 10 个字节,意味着有 80 位。你听过 千字节(kb)兆字节(mb)千兆字节(gb)。不同前缀代表不同数量级,就像 1 千克 = 1000 克,1 千字节 = 1000 字节或 8000 位。Mega 是百万字节(MB), Giga 是十亿字节(GB),如今你可能有 1 TB 的硬盘,8 万亿个1和0等等。我们有另一种计算方法,二进制里,1 千字节 = 2的10次方 = 1024 字节,1000 也是千字节(KB)的正确单位,1000 和 1024 都对。
你可能听过 32 位 或 64 位计算机,你现在用的电脑肯定是其中一种,意思是一块块处理数据,每块是 32 位或 64 位,这可是很多位。32 位能表示的最大数,是 43 亿左右,也就是 32 个 1。所以 Instagram 照片很清晰, 它们有上百万种颜色,因为如今都用 32 位颜色。
负数
当然,不是所有数字都是正数,比如我上大学时的银行账户,我们需要有方法表示正数和负数。大部分计算机用第一位表示正负:1 是负,0 是正。用剩下 31 位来表示数字,能表示的数字范围是 正 20 亿到负 20 亿。虽然是很大的数,但有时还不够用,全球有 70 亿人口,美国国债近 20 万亿美元,所以 64 位数很有用。64 位能表达最大数是 9.2x10。希望美国国债在一段时间内不会超过这个数。
位址
重要的是计算机必须给内存中每一个位置,做一个 "标记",这个标记叫 "位址", 目的是为了方便存取数据。如今硬盘已经增长到 GB 和 TB,上万亿个字节!内存地址也应该有 64 位。
浮点数
除了负数和正数,计算机也要处理非整数,除了负数和正数,计算机也要处理非整数,比如 12.7 和 3.14,或"星历 43989.1" 这叫 浮点数,因为小数点可以在数字间浮动,有好几种方法 表示浮点数,最常见的是 IEEE 754 标准。
你以为只有历史学家取名很烂吗?它用类似科学计数法的方法,来存十进制值,例如,625.9 可以写成 0.6259×10 ^ 3。这里有两个重要数字:.6259 叫 "有效位数" , 3 是指数。在 32 位浮点数中,第 1 位表示数字的正负,接下来 8 位存指数,剩下 23 位存有效位数。