首先,今天是中国程序员日(没错就是1024),祝程序员们节日快乐!
你的脑海中是不是已经浮现了
格子颜色深浅也许代表二进制的0和1?
我们经常好奇,程序员每天坐在电脑前看着一串串的代码,这些代码到底写的是什么?
从事程序员工作的人有很多,大体上有十几种,每一种工作内容都有不同:C程序员、C++程序员、Python程序员、vb程序员、java程序员......
其实不论写的是什么代码,都是在用一种我们普通人看不懂,但是机器能识别的符号,来传达人的指令,这种在网络上搬砖的工种也称为时代码农。
想要看懂程序员码出来的符号,必然要学厚厚的一本本知识,毕竟
越秃越证明资历的头发?
但是对于计算机而言,这些语言可比识别我们人类的语言“一把把车把把住了”简单的多。
不过这还不是计算机语言的最终形态,我们平常写的程序、敲的代码,各种数据,在电脑运行识别时,都被编译器翻译成了二进制!当再把二进制拆解、计算、重建,就有了我们生活中的软件、游戏、音乐、电影、app......
也许,拥有了二进制,就拥有了全世界?
小谢尔顿梦中奇遇的二元宇宙
二进制到底是个什么?
我们在课上都学过,二进制为“逢二进一”,以及用1或者0来表示,这是为什么呢?
如果用通俗的方式来解释,我们可以把二进制比作用灯泡来烽火通信。
比如当完全没有情况时,一个灯都不用开,用0表示;如果有1个敌人,也就是1个信息,就用1表示。
如果来了200个敌人怎么办?将灯泡开关200次不现实,同时亮200个灯泡又太浪费,而同伴又不能识别1和0以外的数字。这时,可以用二进制来表示不同的状态。
进制换算表
数学课上学习二进制的记忆是不是被唤醒了?还没搞清也没关系,这台机器总能让你一目了然!
中国科技馆【逢?进一】了解一下二进制、十进制吧!
二进制和中国八卦算法一样?
印象中,二进制服务于电脑,电脑将二进制变得家喻户晓。
但实际上,莱布尼茨(Gottfriend Wilhelm Leibniz,1646-1716)的二进制最开始并不是专为电脑服务的,这只是他在哲学、法学、数学、神学、伦理学、历史学、语言学一系列研究中的一项数学研究成果而已。而这项成果的发现,与中国的八卦还有着密不可分的关系。
二进制发明者莱布尼茨曾说过:“从虚无创造万有,用一就够了”,而1这个灵感,与中国八卦关系紧密,他曾写信与北京的神父交流二进制与八卦的关联性,在他1716年发表的《论中国的哲学》一文中,专门指出了二进制与八卦有共同之处。
八卦和二进制相通?
八卦中的每一个卦,由称为“爻”的两种符号排列而成。“― ―”叫做“阴爻”,相当于二进制里的0,“—”叫做“阳爻”,相当于二进制中的1。
八卦图中的“横线”为爻
太极生两仪,两仪生四象,四象生八卦,这句话大家应该都熟悉,这句话刚好对应了二进制的计算方法。
以此类推,如果每次取六个,那么会得到64种排列,称为“64卦”,其结果也是和二进制一一对应的。
有没有感受到祖先的智慧,在二进制和十进制出现之前,八卦的和谐之美就已经奠定了。但是否真的是八卦让莱布尼茨发明了二进制?
传言当年莱布尼茨发现八卦与二进制有同样的计数方式后,认为自己窥得了中国几千年伏羲文化的天机:一生万物。并且向康熙皇帝写信,想要在中国建立神学院,更好地研究中国的神学与哲学,但惨遭拒绝。
不过更靠谱的传言为莱布尼茨发明二进制后,酷爱研究哲学与神学的他巧合地发现了中国的八卦图正好与二进制的计数方法一致,这才有了二进制诞生于中国八卦的说法。
在历史的长河涌动下,真相不得而知。不过也引得学者对这个争议细细考究,还专门出了相关著作来探讨这个谜团。
上海人民出版社出版图书
二进制模型初诞生
不免疑惑,如果最初的二进制不用于芯片那谁来运算?
其实最开始的二进制是由木头模型演示的,1672年,莱布尼茨搞出了一个木制的机器模型,向英国皇家学会会员们演示二进制,但这个模型只能说明原理,不能正常运行。
他同时也在从事原始计算器的研发,此后,莱布尼茨与钟表匠合作,造出了全球首个可以进行乘除运算的原始计算器,莱布尼茨出理论,钟表匠出技术,最后由莱布尼茨组装,一台由齿轮系统来传动的,运用计数器和可动的定位机构的计算器在1674年诞生了,这是能进行乘除的计算器在世界上最早的应用。
莱布尼茨的计算器
二进制的创造工作完成后,“沉迷于手工”的全科人才莱布尼茨没有马上发表,后来又忙于微积分的改进、研究其它的科学问题......直到1679年,他才重新审视这一重要的数学创造,正式发表了《二进算术》的论文,才算完善了二进制。
别看电脑很强大,它只认得这几个数
200多年后,约翰·冯·诺依曼将二进制用于计算机中。
为什么十进制用得好好的,偏偏计算机就要用二进制?
其实CPU的工作原理就是无数次的通电和断电(我们可以理解为断电和通电,实际上并不是完全断电,而是高电位和低电位,一般规定低电平为0~0.25V,高电平为3.5~5V )。
每一次通电、断电,都是计算机运行的核心和基本,我们看到的画面、听到的声音、打出的文字,全都是集成电路无数次的通电和断电所转化呈现的。也就是说,电子管的两种状态决定了所有的数据。
电脑集成电路
我们将二进制运用到电脑中,0代表关,1代表开,电脑通过一堆“有两个状态的东西”来代表所要表达的数据。信息也就通过无数个0或者1去传播,最后进行解码,大家就能获取其中的信息。
在实际的运用中,具有两种明显稳定状态的元件很多。例如,氖灯“亮”和“熄”;开关的“开”和“关”; 电压的“高”和“低”、“正”和“负”;纸带上的“有孔”和“无孔”,电路中的“有信号”和“无信号”, 磁性材料的南极和北极等等,不胜枚举。
所以磁盘里的二进制,用磁铁的N极和S极表示0和1,N=0、S=1,把硬盘的盘面放大了1000万倍看看,上面都是小磁铁,通过硬盘的磁头识别,再变成电流信号“通”和“断”来交给CPU处理。
光盘上也是一样,光盘上是用“长”和“短”的小镜子来表示1和0。把光放大了1000万倍看看,上面都是长点和短点,用激光头一照,根据反光的长度来表示数据。
担心数据太多了电脑分不清?其实在运行中,每个代表0或1的“灯泡”叫1bit;8个“灯泡”会被编成一组,叫做1个字节,或者1byte(相当于班级中的小组),以这个单位来在网络上传输信息或在硬盘、内存中存储信息。
通常,我们输入电脑中一个英文字母需要一个小组,也就是8个“灯泡”表示,一个汉字需要两个小组,也就是16个“灯泡”表示。
在用电脑的过程中,电脑好不好用,快不快,这种处理“灯泡”的能力会体现在“位”上。比如,电脑的CPU是64位的,就相当于一次能传递64个灯泡组成的信息。想一次能处理的信息越多,就需要越多的“位”数。
从1946年诞生的第一台大而笨重的计算机到今天被广泛使用的灵巧的笔记本电脑,都是基于二进制运算的计算机。无论计算机所处理的信息是数字、文字还是图像,这些信息都会被转换成基于0、1二进制运算系统的信号,一串串的0、1也成为了计算机和信息时代的代表符号。
如果看完了二进制之后还是一脸蒙圈,那就对了,毕竟数学不好搞!而且,程序员并不直接使用二进制语言,因为它太抽象太复杂,所以人们就开发出在二进制计算基础上的第二基础语言,以及更进一步的c++语言等,这种语言更方便进行编辑也更容易理解,也就是我们所说的代码。
日常生活中,我们也许会调侃程序员的“发量”、“衣着”......但我们的内心其实也很敬佩他们聪明的头脑和对枯燥工作的坚守,当然,偶尔也会对程序员表以心疼,就像
最后,
为程序员们献上几个笑话
1、世界上有10种人,认识和不认识二进制的。
2、程序员为什么放弃斗争呢?因为他没有兵(array)啊。
3、数据库SQL走进了一家NoSQL的酒吧,过了一会儿,它就走了出来。因为找不到桌子(table)啊。
标签: 16进制转10进制