编程一样可以很带感--1+1不一定等于“2”

    刚玩了两把flash小游戏,我也不知道为什么我从小就喜欢玩这个东西,想当初我上大学选软件的目的就是为了学会做flash,那时目的单纯吧?哈哈,初中的时候看的showgood还有小小对我的震撼太大了,感觉这就是计算机,不过我也算实现了这个愿望,我大学的时候还是把AS学会了。

    好了,闲话不扯了,开始从入门开始写我脑子里的这一系列。当你从高中毕业之后,脑子里多少都会对学了很多年的数学语文,或是文科理科有些怀念,那时候想上大学就好了,上大学就能学我喜欢的理科,不用去学讨厌的语文,英语。但是到了大学才会发现,原来所谓的知识原来是不分科的,想单纯学某一类基本上很难做到。计算机亦是如此,计算机这门学科本身就包含了他自己的文科理科,至少我是这么认为的。像语言那一方面就很文科,很容易入手,需要的逻辑推理也不是那么深入,所以经常可以看到大学学文科学完之后到某某培训机构培训一下,出来依然可以编码,不要惊讶,因为单纯的编码是很容易的事情,所谓的C++,C,JAVA等等语言,只能说是你和计算机交流的一个工具,你想中国人交流需要用中国人听的懂的语言,和外国人交流就要说外国人交流的语言,和计算机交流当然就需要计算机能听的懂的语言。不过要是园内某位高人能弄出中文的编程语言,那对中国的计算机发展绝对是一个巨大的贡献(大家可以去搜一下“易”语言)。然后像计算机的四大基础课和算法就很像理科,需要你花时间去推敲,这些学起来都比较枯燥,不像语言,你写个程序,看个效果很有成就感,这些是计算机的内功,需要长时间的积淀。至于哪一方面比较重要,我想高中老师没有一次的提醒过,不要偏科,偏科也许你可以轻松排到全班前20,但是就很难进前10。而且在毕竟这是一个学科,这两方面是相辅相成的,理解哪一方面对另一方面都有不可替代的促进作用。

    我们从零开始,计算机说白了就是可以进行计算的机器,英文compute就是就是计算的意思,后面加个r表示名词,“可以计算的人(物体)”,扯到计算,从小到大我们都知道要计算就必须有数,数是构成计算的一个根本,所以计算机就是一个能瞬时处理大量数字的机器。高中学过,计算机是硅构成的,不知道有没有人想过是怎么个用硅构成法,另外我们在物理上还学过一个二极管的东西,正向能导电,反向不能导电,二极管的发明对计算机是有重大意义的。而计算机的思维方式就是建立在这个基本原件上面的。

     计算机是个很单纯的东西,单纯的只知道“好”和“坏”两种状态,在计算机的世界里说白了就认识两样东西,导电和不导电,最初的计算机是用大量的开关来给计算机编程的,也是就两个状态“开”和“关”,所以人们就用两个数字代替这两种状态,分别命名为“0”和“1”,于是计算机数学就是二进制的数学,所谓二进制就是"逢二进一“,在实际生活中我们是”逢十进一“,所以你需要忘掉现实世界的一个规则,来到虚拟世界。什么叫”逢二进一“,如果你叫你的计算机数数,那么它一定是这样数的,0,1,10,11,100……,相对于我们的数数方式0,1,2,3,4,5……我们要数到十才会在前面再写一个一。我们来比较一下我们可爱的计算机和可恶的我们的数数方法,前两个数是一样的,第三个,计算机的是10,我们的是2,如果我们从右往左看,最低一位是0,高一位是1,我们这里引入一个权重的概念,不要小看权重,在下一个文章里对这个权重的理解很重要,我们以从右往左依次标识2进制的位为第0位,第1位,……第n位,如果这个二进制数有n+1个数字构成的话,这里要注意,我们是从0开始的,不是从1开始的。下面说到每一位的权重,每一位的权重就是2的n次方,也就是说第0位的权重是2的0次方,也就是1,第1位是权重是2的1次方,也就是2,第n位就是2的n次方,这个数会有多大,那个老掉牙的国王在棋盘里放米粒的故事在高中某一章数学书的前言里就有,至少我那个年代的数学书里就有。我们来进行二进制到十进制的换算,我们将每一位的数字乘以该位的权,比如说10,我们用0乘以它的权1,1乘以它的权2的一次方,得到十进制的数字2,依次类推。

    十进制怎么转换成二进制呢?有一种方法,叫做短除法,很简单,中国人学了这么久,套公式的能力绝对是世界上最强的,什么是短除法?就是将一个十进制的数不停的除以二除到全部除尽或者商为一为止,举个例子,比如说25,除以2,余1得商为12,再拿这个12除以2,余0商6,再拿这个6除以2,余0商3,再拿3除,余1商1,不能再除了,要打住了,我们看到余数依次是1、0、0、1、1,有的人很聪明,他把这个二进制数反过来化成十进制,他说你坑爹呢?这个二进制数化成十进制数是19,不是25,所以这里要记住了,我们需要反过来,也就是说我们要把最后得到的商写在第一位,然后再是最后一次的余数,倒数第二次的余数,也就是11001,再算一下绝对是25,如果你有兴趣,可以研究一下为什么这个算法的是这样的原因。

    当人们发明了二进制之后,人们发现了一个事情,这也太麻烦了,这纸也不够长啊,一个四位数的十进制数,我就要写十多位的0和1的二进制数,人们为了方便标记,于是一般用十六进制的数标记二进制的数,也就是逢十六进一,有人问了那9以后的怎么表示,9到15分别用字母A,B,C,D,E,F表示,比如说一个数FF那就代表255,怎么算的,参考二进制的权重,十六进制的权重是16的n次方,参考二进制的方法就能化成十进制数,那二进制和十六进制怎么转换呢?最简单的一个办法,以四个二进制数位一组,没有四个的就在前面补上0,举个例子我们找一个二进制的数10001,这个数化成十进制是17,我们四个四个一组的意思就是从右边开始0001这四个数是一组,然后还剩下一个最高位的1,我们在前面补上三个0,就是0001,和后面一样,我们分别把这两组数化成十六进制,第一组化成十进制是1,十六进制也是1,第二组一样,所以这个二进制数化成十六进制就是11,按照权重的算法算成十进制还是17,证明这个方法没有错,至于为什么,可以用数学证明证出来,我很想把这些证明贴出来,可以我手机像素不够,写在纸上照成图片看不清楚。那十六进制化成二进制应该很容易了吧?

    好了,在说了最基本的进制问题后,你会发现在计算机的世界里,1+1不是等于”2“的,它等于10这个值,所以说虚拟和现实是不一样的,虽然这篇文章很弱智,但是作为计算机基础来说,他是必须要知道的,后面的很多东西都要赖以这些知识生存,当开始了解编码的时候,也许你就会觉得这些无聊的进制其实并不是看上去那么肤浅的。

posted on 2011-03-02 19:12  一心一怿  阅读(2102)  评论(3编辑  收藏  举报

导航