发表时间:2020年10月24日 18:03:47
最后发表时间:2020年10月24日 19:58:05
本文博客园链接:https://www.cnblogs.com/dryice/p/13871212.html
为什么将每年的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+996=2020=404+404+404+404+404(今年是2020年,996,404是什么意思你懂的)
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这个数字很敏感,事实上,对于很多和2的整数次幂的数字,都有这种神奇的感觉,下面我们来看看1024的小伙伴们长什么样!
1Byte=8bit
年代久远的8位计算机
8位数据类型(字节整型(byte),字符型(char))
16位计算机
一个中文字符占用16bit空间,即2Byte
16位数据类型(短整型(short int))
32位计算机
32位数据类型(默认整型/长整型(int/long int),单精度浮点型(float))
IPv4协议的位数为32位(目前IPv4地址已经全部分配完)
64位计算机(最常见)
64位数据类型(超长整型(long long int),双精度浮点型(double))
有符号字节整型可以表示的数的范围是-128~127(128-1)
ASCII码可以表示128种字符,范围从0~127
MD5编码通常为128位
IPv6协议的位数为128位
无符号字节整型可以表示的数的范围是0~255(256-1)
扩展ASCII码可以表示256种字符,范围从0~255
常用的8位RGB颜色分量范围是0~255
老式硬盘的扇区大小为512字节
老式硬盘MBR主引导记录占用一个扇区,大小为512字节
著名益智消除小游戏2048,其玩法是从2开始,每两个相同数字的方块可以合成出一个新的2倍大小数字的方块,游戏中体现了二进制合成的思想,最后看谁能合成到2048,而且之后还可以继续向更大数字挑战
新型硬盘的扇区大小为4096字节(4KB)
短整型可以表示的数的范围是-32768~32767(32768-1)
无符号短整型可以表示的数的范围是0~65535(65536-1)
16位色图片(RGB565)可以表示65536种颜色
1MB=1048576Byte
24位色图片(RGB888,最常见的图片)可以表示16777216种颜色
1GB=1073741824Byte
默认整型/长整型可以表示的数的范围是-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)
无符号(长)整型可以表示的数的范围是0~4294967295(4294967296-1)(这也是一个很常见的上限)
FAT32格式分区单个文件最大大小为4294967296Byte(4GB)
32位操作系统最大支持4294967296Byte(4GB)的内存
IPv4协议可以表示的地址数为4294967296(约42.9亿,目前IPv4地址已经全部分配完)
超长整型可以表示的数的范围是 − 2 63 ∼ 2 63 − 1 -2^{63}\sim2^{63}-1 −263∼263−1
无符号超长整型可以表示的数的范围是 0 ∼ 2 64 − 1 0\sim2^{64}-1 0∼264−1
NTFS格式分区的理论最大容量为 2 64 2^{64} 264Byte(16EB)
IPv6协议可以表示的地址数为 2 128 2^{128} 2128(估计到宇宙毁灭也用不完)
听觉系统接收到的是声波(机械波)信息,机械波有振幅,波长,波速等要素,其中振幅反映波的强度,而波长决定了波的某些性质。和视觉系统一样,人类只能接收一定波长范围内的机械波,这一部分机械波称作可闻声(类比可见光)。
若用c表示声速,则人类能接收到的机械波的波长范围大约是 c 20000 ∼ c 20 \frac{c}{20000}\sim\frac{c}{20} 20000c∼20c(常温下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λ1−logaλ2=logaλ3−logaλ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} 390∗10−9∼780∗10−9m),比声波(传说中的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了!