“程序员节” 说说“信息在计算机中的表示方法”

天是程序员的“非法定”节日,没有放假,我们先不发正式课程,先闲聊这10月24日为什么会是程序员特有的节日,然后顺带说说大千世界的信息在计算机中都是如何表示的? (不管怎样,相比很快也要来的又11节电商节,显然咱们这个1024程序员节终归还在科学范畴内)


代电子计算机采用2进制记载数据。1024正好是2的十次方,所以国外就有程序员自行将10月24日纳为天下程序员的节日了,就像有些搞数学的选中了3.14。

什么电子计算机采用二进制记载数据这个事,连不是程序员的人也能理解啦:电子电路通电和断电是两个相对稳定而精确的状态。想想如果银行使用电子电路上的电压值来表示储户们的存款的话,那该有多少黑客天天想破坏银行机房的供电系统……

电子电路的通电断电状态类似,磁盘用某个点带磁或不带磁,光盘用连续的平滑或出现激光烧蚀的凹点来记载数据,来表示1或0。然后再用归组的1或0表达数据。如果以2位为例,00表示十进制的0。00加1到01,01表示10进制的1;再加1得到10,表示十进制的2;最后是11表示十进制的3。11再加1呢?必须用三位的二进制数表达,得到100,表示十进制的4。

果用2的几次方表达,二进制的0是2的0次方,二进制的10是2的1次方,二进制的100是2次方。1024是2的十次方,所以用二进制表达,应该是1后面带10个零:

100 0000 0000。 通常我们称为1K。

样是100三个数字,十进制就表示一百,二进制却只能表示4;可见二进制数实在是浪费空间。这些空间对应的可能就是磁盘的容量,或者网络的带宽。暂时地,如果没有可以更稳定地表达三或更多种状态的介质,并且是可以被高度集成的介质被发现或发明出来,这些浪费只能忍受了。不过电子计算机估计自己也很烦这么长串的数据(这个原因纯属我瞎说),所以实际进行各种逻辑处理时,是以8位(bit)为一组,作为最小可直接处理的单位,称为了一个字节(byte)。通常称“位/bit”为小B,而“字节/byte”为大B。你家我家拉宽带时,运营商号称百兆千兆万兆的网,用的是小B,所以实际更有意义的网速,应该除以8。电脑硬盘上的文件大小,就是以大B(字节)计算的。比如,一张风景图片20M。其实是十进制20 * 1024 * 1024个字节。

到磁盘上的图片文件,比XXX.JPG;很容易联想到磁盘上歌曲,比如一首MP3。实际使用时,前者电脑会将它显示到屏幕让我们看,后者电脑会将它播放出声音让我们看。而如果是一段视频,电脑会播放出来,我们且听且看。那电脑是怎么知道这个文件是图,那个文件是歌曲,再过去那个文件是视频呢?要知道,不管什么文件,它们的数据在电脑磁盘里都是一堆的1和0啊。电脑显然不知道,只有制作、传播及使用的人知道。为了让电脑能够区分磁盘上一大堆文件,主要有三个办法,一个方法是在命名文件时,给它一个扩展名,什么.JPG、.GIF、.MOV、.MP3、.MP4的等等;另一个方法是约定某些文件数据的最前面几个位,用以表示这是什么数据;最后一种办法就是真让电脑(当然,实际是电脑程序)来猜了。这三种方法都没有什么可靠性。比如第一种方法吧,许多同学硬盘里某个深深的文件夹里,明明是岛国的小AV,可是文件名却往往是 “《毛概理论第1到30节课堂笔记.doc》”。


一个数字,可以表达不同的含义,这个在现实生活中就已经是这样了。比如 “66176”是什么?我的直觉反应是歌曲《小草》的前5个音呢。而1024有人觉得不就是10月24日吗?可宅得要命的程序员却自作多情地联想它是2的10次方。如果是我,可能又别有解释。因为我第一次买车时,自选牌号就是“1024G”。家人说带个4字不吉利,可我却一直开着它在路上很得意,特别是某次开去软件园,刚停在路边,迎面款款走来三位都是女神级的美女,其中一位惊讶地叫出来:“看,这个车的容量正好1个T、1个T!”。我内心那得意啊。直到有一天在街上,突然一车窜出并超过我,我清楚地看到它的牌号是“1024T”,当时我就无地自容了。

个小段子,说是某外星人闯入大英帝国的图书馆,迅速浏览子全馆的书籍,然后掏出一要能某种高精度金属条,再掏出高精密的游标卡尺,在金属条上刻下一条线,就坐着UFO回到他们的星球了,这就带走了大英帝国图书馆的所有内容……

个段子怎么理解呢? 刚才不是说到圆周率吗?大家都知道它是一个无限不循环小数,代表它后面可以有无穷尽个数。假设我们用3代表字母C,1代表字母A,4代表字母D,那”3.14“就是 ”CAD”,咦?不是正好有个英文单词缩写就叫CAD嘛!。外星人也是用这个方法,将大小写英文字母,几个标点符号,全编个号。然后将图书馆里从第一本书第一个字符开始全部排在一起,就可以得到一大串数字(假设为0.N,N代表后面一大串数字)。再着在金属条上刻下一个位置,设位置左边长度为X,位置右边长度为Y,并且有X除以Y正好是前面的0.N。

人说,这个段子有数学漏洞,人类的数字不就是0到9十个数字吗?英文字母不区分大小写就有26个了,十个数字不够表达啊。 这就是缺少“进制”的概念啦。简单说,1位不够,我们可以将2位编为一组嘛,比如0112中,01还代表A,而12则代表L嘛。如果外星个来的是北京的首图的话,嗯,光给那么多汉字编个序,就够它折腾一下午的,哈哈;但最终还是可以轻松带走所有知识的。

书中还有插图呢,插图千变百化,怎么表达?这个就更不用担心啦。以我们人类的知识,你现在电脑上不就是有许多图片了嘛! 图片表达的最直观方法是一个二维坐标,上面有不同的点,如果是张黑白图,那就1表示黑,0表示白嘛。如果是彩色图,就有4个字节来表示种颜色。当然这么涉及点物理知识:通过搭配三元色(红绿蓝),就可以调出千万种颜色啦……


读本文到这里,八九不离十,你今天肯定已经在上班写代码了……不过,既然过节,我们得来个小彩蛋吧自娱自乐一番吧。 前面说到外星人要是来到了首都图书馆窃取咱中国上下五千年的文化,那它(他?她?)就得为所有汉字挨个儿编个号。这件事其实咱人类自个儿已经做了,比如“啊”同学,它取到的号(数字)就是45213。看吧,足足要5位数呢!外星人此刻心里应当是肃然起敬的“这国家真有文化!”。现在请打开控制台,然后用将键盘上的数字小键盘确保切换到“数字”状态,再按下Alt键不换,然后输入45213这个字,接着松开Alt键,是不是屏幕上输出“啊”了? 哈哈,下面我就送出一串“编码式的祝福”了,专门给懂得“一切信息都可以编码为数字”的程序员们: 46028  53490  54449  55278  46323。

(完)


欢迎关注 “程知网”  公众号,第一时间微信上阅读d2school新文章。扫一扫:



猜你喜欢

转载自blog.csdn.net/nanyu/article/details/52905532