美文网首页CS自修室
CS自修室第二期:你不得不学的解决问题的办法!

CS自修室第二期:你不得不学的解决问题的办法!

作者: 可可奶爸 | 来源:发表于2021-02-28 15:49 被阅读0次

    - 1 -

    2021年02月28日。

    周日。

    这是奶爸进击之旅——CS自修室的第二期更新。

    - 2 -

    上期末尾留下了一连串由0和1组成的数字作为留存疑问,在解答上期问题之前,我们先来了解一下什么是计算机科学。

    计算机科学,实际上与编程无关,它其实是关于解决问题的方法。

    因此,它不仅仅只是适用于计算机科学或工程领域,在艺术、人文科学、社会科学等其他领域中也同样适用。

    科学发展至今,任何领域都需要计算机科学的介入,想必这是众所周知的事情,所以,学习了解一点计算机科学知识,不仅能让自己的知识更加丰富,而且更加了解与时俱进的科技发展,最重要的一点是,它可以很好地帮助我们解决问题。

    言归正传,既然说计算机科学是解决问题的方法,那是如何实现的呢?

    如图,input(输入)就是当前需要解决的问题,而output(输出)则是解决方案,至于介于输入与输出之间的框框,蕴含着神秘的力量,你可以使用计算机使用这种魔力,为你解决问题。

    这种神秘力量,也就是你即将编写的代码。

    但是,要做到编写代码这一步,必须先了解计算机需要怎么样才能表达信息?

    因为,计算机所能识别的语言,与人类说的语言是完全不一样的。

    - 3 -

    作为计算机,最基本的功能是计算 ,人类可以通过掰手指从一数到十,但是计算机却无法轻易做到。

    这是因为,人类是以十进制(decimal)作为计算基数的,而计算机则是以二进制(binary)为计算基数。

    什么是二进制?

    很简单,就是仅仅使用0和1这两个数字为计算基数。

    而在这样的系统中,数字0和1被称为位(bits)

    为什么计算机要被发明为这样而不是直接发明为十进制,那不是更好理解和使用吗?

    理论上确实如此,但是,计算机这些设备,都是通过电力作为物理输入的,若要实现0-9为基数的十进制算法,还是非常困难的。

    然而,如同灯泡通电会亮,断电会关闭的原理,我们同样可以利用设备电流的插入和拔出,实现信息的表达。

    通电则表示数字1,断电则表示数字0,以此来控制和跟踪信息——这就是二进制系统的发展由来。

    但是这同样存在一个问题,如果一个灯泡的开关代表0和1,只有一个灯泡的话,那便只能计算到1,要想要计算得更多,就必须要更多的灯泡才行。

    那么3个灯泡可以最高计算到什么数呢?

    000—表示0,001—表示1,010—表示2,011—表示3,100—表示4,101—表示5,110—表示6,111—表示7。

    如此可见,3个灯泡的开关状态可以表示8个数字,但非常重要的一点是,计算机的计算的起始数字为0(因为0有它所包含的意义),所以,只能数到7。

    而计算机是如何实现这样的二进制系统呢?

    计算机内部可不存在灯泡。

    不过,计算机内部确实存在非常非常微小的开关,数以百万计的小开关,它们可以打开、关闭,这种小开关被称之为晶体管。

    但如上文介绍,计算机表达数字的时候,有它自己的方式,仍以3个位表示:

    以此推类,如果需要计算到8,则需要更多的数位才可以实现,也就是1000表示8。

    做一个简单的练习,110010可以代表什么数字呢?

    答案是:50。

    算法很简单,只要计算代表1的数字,从右到左,分别表示2的0次方、2的1次方、2的2次方,以此推类。

    上面的二进制数字,最左边的1表示2的5次方的算式结果,为32,第二个1表示2的4次方的算式结果,为16,最后一个1则表示2的1次方的算式结果,为2.

    因此,32+16+2=50。

    现在,学会二进制的运算,你也可以像计算机一样进行计算了。

    - 4 -

    当然,在人类的世界里,并不只有数字而已,我们需要计算机所做的事情也不仅仅只是计算那么简单。

    可是如何使计算机来表示其他的东西呢?

    比如?

    字母。

    那就是赋予特定的字母一个特定的二进制数值,也就是给字母一个编号。

    如大写字母A,则以十进制65来表示,那么,按位的模式,01000001就可以代表字母A了。

    然后按这个顺序编号,我们可以给所有字母进行编号了,计算机也能同样的方式表示字母了。

    类似的,字符也是如此。

    这种编号系统,称之为ASCII,美国信息交换标准代码,以此编排方式,键盘上的按键也就能拥有相应的二进制位数了。

    所以,按照上表,一一对应一下,就能很清楚地发现,上期留下的那一连串的数字是什么意思了,也就是——Thank you!——的意思。

    需要注意的是,使用ASCII系统,计算机则使用8bits来代表每一个字符,毕竟当时内存空间可是非常昂贵的。

    而8个位(bit)组成了一个字节(byte),这些字节均是由八个0或者1的模式组成的。

    如今仍使用这些术语来表示,只不过现在大都是以兆字节、千兆字节来计算了。

    不过使用ASCII系统,是有局限性的,它只能表示256种字符,超过这个限制数位的字符就无法通过ASCII系统来表示了。

    很简单的例子,如果是非英语语言的字符,256个字符是完全不够用的,所以必然需要有更全面的编排系统来替代ASCII系统。

    然而是什么系统?

    今天就先总结到这里了,遗留下的疑问,我们下期再继续总结吧。

    01010100 01101000 01100001 01101110 01101011 01111001 01101111 01110101 00100001

    ——我就是可可奶爸,一个平平无奇的全职奶爸

    我只是一个平平无奇的全职奶爸,不敢指导你什么,只想和你一起共同成长。

    关注公号:Irene_Daddy 【进击的可可奶爸】

    本号的更新内容:

    周一,马拉松幻视:以马拉松为目标,每周跑步总结。

    周三,英语屋:总结学习时收获的英语口语表达,以及一些英文的学习方法。

    周五:向往的N2:以考取日语N2为目标,每周学习总结。

    周日:CS自修室:自学CS的每周总结。

    还有不定时的更新奶爸的日常:读书、观影的一些碎碎念,偶尔的秀恩爱撒狗粮,不时的亲子活动等……

    相关文章

      网友评论

        本文标题:CS自修室第二期:你不得不学的解决问题的办法!

        本文链接:https://www.haomeiwen.com/subject/sjmgfltx.html