10.24程序员节专辑——程序员最爱的数字,1024的秘密

发表时间:2020年10月24日 18:03:47
最后发表时间:2020年10月24日 19:58:05

本文博客园链接:https://www.cnblogs.com/dryice/p/13871212.html

10月24日程序员节的由来

  为什么将每年的10月24日定为程序员节?1024程序员节是什么梗?

  因为计算机内部采用二进制计算,为了计算方便,一般的计算机储存容量单位(Byte、KB、MB等)的单位进率都是1024,它是2的10次方,又与我们常用的十进制里的1000十分接近,所以这个数字对于程序员来说有特殊意义。因此,中国的程序员日被定在10月24日

  1024是2的十次方,二进制计数的基本计量单位之一,1024程序员节是中国程序员的共同节日。程序员就像是一个个1024,以最低调、踏实、核心的功能模块搭建起这个科技世界。另外,1G=1024M,而1G与1级谐音,也有一级棒的意思,因此每年的10月24日被大家定为程序员节,这也是一个属于中国程序员的共同节日。
  众所周知,程序员是一个在外界看来很艰苦的一个工种,网络上甚至有这样的段子:一女孩说择偶的标准是程序员,原因是程序员“钱多话少死得早”。话糙理不糙,从这句话可以看出,常年与加班为伍的程序员,工作压力有多大。你眼中的程序员可能是这样一群人:常年如一日的格子衫着装让你倍感嫌弃又想吐槽?超长反射弧和超高笑点让你经常冷场?略显愚钝木讷的举止让身边的人觉得无聊又无趣……

  他们经常让外人觉得莫名其妙,甚至以“异类生物”,“程序猿”相称呼。但是就是这样一群人让我们的生活悄然改变着,以最低调、踏实、核心的功能模块搭建起这个科技世界,让我们感受着科技力量的伟大和生活的便捷。程序员就像是一个个1024,一步一个脚印,悄无声息地为世界进步贡献着自己的力量。
  因此1024程序员节就被定义为关爱身边每一位努力奋斗的程序员的日子。

  1024程序员节,为了让程序员感受到身边“关心和热情”,不少网络公司都使出浑身解数。例如请来美女模特化身程序员鼓励师,为程序员捏肩捶背加油呐喊。
  也有发放程序员切身需要的福利:育发洗发水。大家都知道,发际线和秃顶已经似乎已经和格子衫一样,成为了程序员的固定标配。
  更"人性化"一点的公司,就直接给程序员放假了…

  当然,我们也希望各位老板们发扬人道主义精神,坚决贯彻1024程序员节不加班的精神。也让我们一起祈祷:希望在10月24日能无惊无险,这天小鲜肉们都别公布恋情,明星们都别撕逼,让程序员们痛痛快快的过个好节、约个会。

  最后,程序员节程序员们可以写写技术文章,发发朋友圈和博客,让不善言语的程序员们装逼指数瞬间上升!

1024的趣味解释

  1024+996=2020=404+404+404+404+404(今年是2020年,996,404是什么意思你懂的)

1024的数学性质

  1024是1023与1025之间的自然数
  1024是一个组成4个十进制数字的最小平方数: 2 10 2^{10} 210,它是32的平方: 3 2 2 32^2 322

   2 10 2^{10} 210(1024)的近似值是 1 0 3 10^3 103(1000)
   1024 = 2 10 = 4 5 = 3 2 2 \color{red}{1024}=2^{10}=4^5=32^2 1024=210=45=322

  1024是合数,正约数有1、2、4、8、16、32、64、128、256、512和1024
  1024的质因数分解为 2 10 2^{10} 210
  1024是亏数,真约数和为1023,亏度为1。

  1024是第32个平方数,为32的平方。前一个为961、下一个为1089。
  1024是第9个十进制的节俭数。前一个为729、下一个为1029。
  正1024边形为第54个可作图多边形。前一个为1020、下一个为1028。

  在计算机中,8bit等于1Byte,1024Byte等于1KB,1024KB等于1MB,1024MB等于1GB,1024GB等于1TB,因为内存二进制寻址的缘故,内存厂商生产内存时会严格遵循这一标准,但大多数硬盘厂商则使用1000作为换算单位,这一点需要注意。
  老式4:3显示器分辨率的长度通常为1024像素(宽度为768像素)。

1024相似的数字

  其实对于程序员而言,不仅仅只对1024这个数字很敏感,事实上,对于很多和2的整数次幂的数字,都有这种神奇的感觉,下面我们来看看1024的小伙伴们长什么样!

8

  1Byte=8bit
  年代久远的8位计算机
  8位数据类型(字节整型(byte),字符型(char))

16

  16位计算机
  一个中文字符占用16bit空间,即2Byte
  16位数据类型(短整型(short int))

32

  32位计算机
  32位数据类型(默认整型/长整型(int/long int),单精度浮点型(float))
  IPv4协议的位数为32位(目前IPv4地址已经全部分配完)

64

  64位计算机(最常见)
  64位数据类型(超长整型(long long int),双精度浮点型(double))

127/128

  有符号字节整型可以表示的数的范围是-128~127(128-1)
  ASCII码可以表示128种字符,范围从0~127
  MD5编码通常为128
  IPv6协议的位数为128

255/256

  无符号字节整型可以表示的数的范围是0~255(256-1)
  扩展ASCII码可以表示256种字符,范围从0~255
  常用的8位RGB颜色分量范围是0~255

512

  老式硬盘的扇区大小为512字节
  老式硬盘MBR主引导记录占用一个扇区,大小为512字节

2048

  著名益智消除小游戏2048,其玩法是从2开始,每两个相同数字的方块可以合成出一个新的2倍大小数字的方块,游戏中体现了二进制合成的思想,最后看谁能合成到2048,而且之后还可以继续向更大数字挑战

4096

  新型硬盘的扇区大小为4096字节(4KB)

32767/32768

  短整型可以表示的数的范围是-32768~32767(32768-1)

65535/65536

  无符号短整型可以表示的数的范围是0~65535(65536-1)
  16位色图片(RGB565)可以表示65536种颜色

1048576

  1MB=1048576Byte

16777216

  24位色图片(RGB888,最常见的图片)可以表示16777216种颜色

1073741824

  1GB=1073741824Byte

2147483647/2147483648

  默认整型/长整型可以表示的数的范围是-2147483648~2147483647(2147483648-1)(所以很多游戏的经验值/金币上限是2147483647,当然也有使用无符号整型的上限是4294967295,此外,Unix时间戳用从1970年1月1日开始的时间秒数来记录时间,因此在时间戳对应整数达到2147483647时,即格林尼治时间2038年1月19日凌晨03:14:07,北京时间2038年1月19日中午11:14:07的时候,使用Unix时间的32位计算机应用程序可能将无法正常工作,这个问题被称作“2038年问题”。)
  FAT16格式分区的最大容量为2147483648Byte(2GB)

4294967295/4294967296

  无符号(长)整型可以表示的数的范围是0~4294967295(4294967296-1)(这也是一个很常见的上限)
  FAT32格式分区单个文件最大大小为4294967296Byte(4GB)
  32位操作系统最大支持4294967296Byte(4GB)的内存
  IPv4协议可以表示的地址数为4294967296(约42.9亿,目前IPv4地址已经全部分配完)

2 63 − 1   /   2 63 2^{63}-1\ /\ 2^{63} 2631 / 263

  超长整型可以表示的数的范围是 − 2 63 ∼ 2 63 − 1 -2^{63}\sim2^{63}-1 2632631

2 64 − 1   /   2 64 2^{64}-1\ /\ 2^{64} 2641 / 264

  无符号超长整型可以表示的数的范围是 0 ∼ 2 64 − 1 0\sim2^{64}-1 02641
  NTFS格式分区的理论最大容量为 2 64 2^{64} 264Byte(16EB)

2 128 2^{128} 2128

  IPv6协议可以表示的地址数为 2 128 2^{128} 2128(估计到宇宙毁灭也用不完)

感觉中的1024

  听觉系统接收到的是声波(机械波)信息,机械波有振幅,波长,波速等要素,其中振幅反映波的强度,而波长决定了波的某些性质。和视觉系统一样,人类只能接收一定波长范围内的机械波,这一部分机械波称作可闻声(类比可见光)。
  若用c表示声速,则人类能接收到的机械波的波长范围大约是 c 20000 ∼ c 20 \frac{c}{20000}\sim\frac{c}{20} 20000c20c(常温下c的值大约为340m/s)。但是人类对机械波的感知通常是对数感知,即等比感知,波长的比值相等时,人类认为它们在听觉上的距离也是相等的,用数学语言描述,就是当 λ 1 λ 2 = λ 3 λ 4 \frac{λ_1}{λ_2}=\frac{λ_3}{λ_4} λ2λ1=λ4λ3时,1,2的距离和3,4的距离是相等的,两边取对数后,就是 l o g a λ 1 − l o g a λ 2 = l o g a λ 3 − l o g a λ 4 log_aλ_1-log_aλ_2=log_aλ_3-log_aλ_4 logaλ1logaλ2=logaλ3logaλ4,把原来的除法变成了减法,所以取对数后,反映的才是真正意义上的“距离”
  如果两个波波长的比值为1:2(或2:1),我们称它们之间的距离为一个“八度”(octave),这里的“八度”是借用了乐理上的术语,实际上就是两倍关系的意思。
  根据“八度”的定义,人类听觉范围大约是10个八度,由于 2 10 = 1024 2^{10}=\color{red}{1024} 210=1024,也就是1024倍的波长范围。这就是感觉中的1024的由来。

  有的人可能会问,按照刚才给的数据,应该是1000倍啊。其实,这个范围也只是大概的范围,实际上会有些许误差,加上刚才所说的对数感知问题,其实这里的1000和1024在对数角度下差别已经很小了,之所以我要强调1024,也是为了强调人类的对数感知(10个八度),换算成倍数后,刚好是1024,这其实是挺神奇的一件事。

  其实对数这个东西很神奇,从最短波长开始,波长每翻一倍,相当于降低了一个八度,听起来也就更热情一分,最后就变成“低音炮”了,超级激动人心!我曾经把这种波长很长的声音比作红色,就是这样来的,因为它的波长最长,就和红光一样,而且它听起来让人兴奋,心跳加速,很热血,很激情的感觉!这不就和红色给人的感觉是一模一样的吗?而且根据物理原理,这种波长很长的声波穿透力是极佳的(也和红光一样),所以在大老远都能很清楚地听到。比如某辆车里有人正在放歌的话,我在车外第一耳能听到的就是低音炮的声音!
  但是人的眼睛看到的可见光只有差不多2倍的波长范围( 390 ∗ 1 0 − 9 ∼ 780 ∗ 1 0 − 9 m 390*10^{-9}\sim780*10^{-9}\mathrm{m} 390109780109m),比声波(传说中的1024倍)小多了。

  不过我仍然认为人的视觉好于听觉,毕竟人眼的细胞相当于可以分辨出10亿多的像素,而且可见光的2倍多的波长范围中也包括了彩虹的七种颜色,所谓七彩缤纷吧!
  而耳朵,呵呵,很多人都没有音感,经常不对调,就算有,也很难有绝对音感(直接说出波长的能力),而且音质和音色这个问题,就更呵呵了,众所周知,耳机和hifi圈子中的玄学都是这样来的。
  所以我认为,相比于视觉,人的听觉还是要逊色一些,毕竟这个东西看不见也摸不着,是无形的,所谓眼见为实,耳听为虚吧!当然,我们听声音,是为了满足心理上的快乐的,而不是去玩玄学,搞出让人云里雾里的言论的,如果是这样的话,就违背了我们享受快乐的初衷了!


  人类的听觉不光是对数的,而且还是“二进制”的,这又和程序员扯上关系了!你可能会问,既然2倍波长是“八度”,那么3倍,5倍是什么呢?其实一个很神奇的现象是,人类的听觉特别“喜欢”整数比,尤其是小整数比,所以人类认为2倍波长(八度)是非常“和谐”的,其实3倍,5倍也一样“和谐”,但是不如2倍那么的“和谐”,所以2倍对于人类来说就是个很特别的比例了,以至于我们专门找了一个词“八度”去描述它,而3倍,5倍就没有这样的待遇了。一个值得注意的现象是,如果两个音之间的距离是“八度”,那么人类会认为它们是相似的音,3倍,5倍则没有这样的效果。所以我们也经常用2倍即“八度”作为对数坐标上的一个单位去分析波长谱。这样看来,就和二进制就扯上关系了!
  如果把某个特定的音用二进制表示,将会得到意想不到的结果,而十进制则做不到这一点,下面我们就一起来看看:

音名 C(上面加两点) B(上面加一点) Bb(上面加一点) A(上面加一点) Ab(上面加一点) G(上面加一点) Gb(上面加一点) F(上面加一点) E(上面加一点) Eb(上面加一点) D(上面加一点) Db(上面加一点) C(上面加一点)
相对波长(十进制) 1 1.059463 1.122462 1.189207 1.259921 1.334840 1.414214 1.498307 1.587401 1.681793 1.781974 1.887749 2
相对波长(二进制) 1 1.00001111001110010000 1.00011111010110011011 1.00110000011011111110 1.01000010100010100011 1.01010101101110000001 1.01101010000010011110 1.01111111100100010001 1.10010110010111111111 1.10101110100010100000 1.11001000001000111110 1.11100011010000111000 10

音名 C(上面加一点) B Bb A Ab G Gb F E Eb D Db C
相对波长(十进制) 2 2.118926 2.244924 2.378414 2.519842 2.669680 2.828427 2.996614 3.174802 3.363586 3.563595 3.775498 4
相对波长(二进制) 10 10.0001111001110010000 10.0011111010110011011 10.0110000011011111110 10.1000010100010100011 10.1010101101110000001 10.1101010000010011110 10.1111111100100010001 11.0010110010111111111 11.0101110100010100000 11.1001000001000111110 11.1100011010000111000 100
  (由于精度原因,二进制采用了较多的小数点位数进行表示)

  从表中可以看出,从左到右波长依次增大,最后波长变为原来的2倍,即经过了一个“八度”,第二个表继续按照这种方式进行下去。由于上下两个表中每一对应列的波长比值均为1:2,所以人类会认为它们是两个相似的音,因此我在这两个表中所写的音名其实是一样的,只有“加点”的区别,而加的点就是为了区分不同的“八度“的。
  如果按照十进制表示,上面的表和下面的表的波长之间存在2倍的关系,但需要进行计算,而如果按照二进制表示,下面的表的波长仅仅只是向左移动了一位小数点,不需要任何额外的运算。在二进制表示波长的情况下,按照这种方式推导下去,我们甚至可以很容易地把接下来的一个表写出来,逆向推导(波长减小)同理,只不过要把小数点移动方向变成向左移动。


  总结:如果把人类能感知到的机械波的最短波长用1表示,那么它对应的第二个“八度”和第三个“八度”距离的相对波长在二进制下就分别是10,100,在十进制下就分别是2,4,到了最长波长的时候,那么在二进制下,相对的最长波长就是10000000000(1后面有10个0,即10个“八度”),在十进制下,就是1024了!

你可能感兴趣的:(1024程序员节)