1024这个数字想必很多人都很熟悉,但你知道它背后的意义吗?
1024可以是计算机操作系统的进制单位,也可以是程序员们的特殊纪念日。每年10月24日被行业认定为“程序员节”。今天,正是一年一度的“1024程序员节”。
1024,一个巧妙又恼人的数字
1024其实就是2的10次方,是二进制计数的基本计量单位之一,是程序员每天都在打交道的数字。1024用二进制表示为10000000000,因此在程序员眼中,1024是一个“整数”。
因为电脑的运行和存储都基于二进制,所以内存也好磁盘也好闪存也好,理论总容量应该是2的某次幂。老一些的内存都是64M、128M、256M、512M这样的数字。但最常用的2的次幂还是1024——它是计算机领域的基本倍数。
2048这个小游戏中也包含了2的次幂
1024 为什么会成为计算机领域的基本倍数呢?
按照国际单位制 (SI) 的方法,逢千进位,1个千字节表示为1000字节,单位符号记为kB,即:1 kB = 1 000 B。
但计算机是二进制的,所以还是以一个2的次幂来定义“千”更加方便点。如果我们在计算机中表示 1000,就是1111101000,按通常的千进位就是1 KB = 1111101000 B,这看上去好像不太合适。
后来大家发现,1024 这个数很好,它是2的次幂,同时 1024 和 1000 又很接近,误差只有 2.4%。如果改用 1024 来代替 1000,1 KB = 10000000000 B,这下看起来就舒服多了!而且在底层计算时也会减少操作次数。
但问题来了!1024毕竟不等于1000。如果你买了一个标称4600T的硬盘,结果到手只有4000T,你可能就不开心了。
所以到底是1000还是1024?
计算机内部计算都是按照1024来算的,但是销售时却都会按照1000来宣称。比如标称为500G的硬盘,实际上总可用空间是接近500000000000字节,但对于计算机来说,只有465G。
然而又不太好说是硬盘“缺斤短两”了,这是因为K、M这些单位,都是从科学计数法里拿来的,人家本来就是指1000,只是在电脑里成了1024。一般用户几乎不会接触到P以上的级别。在T这一级上,二者的差距不到10%,大家通常也就忍了。
为了避免混淆,国际电工委员会(IEC)提出过一个标准:IEC 80000-13。在这个标准下,科学计数法(1000)按照正常标记,而计算机领域(1024)则全都加一个i。因此,1KB就是1000B,而1KiB才是1024B;1 MiB = 1024 KiB,1 GiB = 1024 MiB,等等。不幸的是,这个标准没有得到很广泛的使用,到现在大家还都是乱来的。
拓展阅读:最先用1024的人是……
有人说是中国人发明了二进制。但二进制正式进入数学体系要归功于莱布尼兹,而莱布尼兹很喜欢中国,明确认为《易》所用的八卦和六十四卦就是一种二进制。但是古代中国人并没有使用这些二进制数进行计算。单纯说构想出二进制表达数字的办法,那很多文明都干过;然而古埃及人有一种乘法,真的是在用相当于二进制的方式来运算了。
比如,计算1262 × 13,他们会这样计算:
1262 × 13
= (1024 + 128 + 64 + 32 + 8 + 4 + 2) × 13
= 1024 × 13 + 128 × 13 + 64 × 13 + 32 × 13 + 8 × 13 + 4 × 13 + 2 × 13
= 13312 + 1664 + 832 + 416 + 104 + 52 + 26
= 16406
等等,这是在干啥?如果我们来做乘法的话,那么我们会:
1262 × 13
= 1000 × 13 + 200 × 13 + 60 × 13 + 2 × 13
……好像也差不多。
古埃及人也是把大数拆成小数来算乘法,但是我们拆成10、100、1000的倍数,而他们则拆成2、4、8、16、32、64……的倍数。这是二进制!
这种计算方式并没有对后代产生很大影响,但每次我们敲出1024的时候,似乎还是值得缅怀一下古埃及人?
1024,是程序员的节日
在二进制构筑的计算机世界里
他们一直用指尖代码改变着世界的点滴
程序员是用代码编织世界的工程师
他们用0和1构筑这个高效而便捷的世界
让科技绽放出向善而动人的力量
一行行代码
为我们创造出更多智能而美好的生活
最后,祝各位程序员节日快乐!
原标题:《程序员们节日快乐!你真的懂什么是1024吗?》