一、什么是计算机思维
计算机思维:你可以把一个问题用比较直观的方法解决,但如果你把此类问题的数量增大,正如越来越多的互联网和大规模数据系统中出现的问题等等你应该思考怎么样才能更便捷,怎样才能更高效。你应该用行之有效的方法处理问题。
现在我提出一个问题:
如果我们有一个电话簿(1000页),我们要从电话簿里找到一个叫做Mike Smith的人,但这本书有上千页,如果从电话簿的第一页开始找的话是不是要很久,因为电话簿是以A,B,C…的方式来存储的,所以我们可能就从电话簿的中间开始找起,我们看到了我们翻到的页面是L页,所以我们可以判断Mike不在电话簿的前半部分。
我们之间把前半个电话簿撕掉,这样一来问题只剩下一半了(500页)
接下来我们该怎么做呢?
我们再从中间把书打开,OK是字母P的页面,我们好像快要找到了。
撕掉一般,撕完后问题又简单了一半,循环往复
从1000页减少到500页,再从500页到250页,125页 ,依次下去
这里我做了一个简单的模型(第一次的效果)
二、计算机是如何解决问题的?
1.一元表示法
如果你在这个年龄或以前的年龄数手指这就是一元表示法,你的手指上实际上代表了一些信息,但是在这个一元表示法中,你能数多高,5个? 6个?
可以举例
1(1)-10(2)-11(3)-100(4)-101(5)-110(6)-111(7)-1000(8)-1001(9)-1010(10)-1011(11)-1100(12)-1101(13)-1110(14)-1111(15)-10000(16)-10001(17)-10010(18)-10011(19)-10100(20)-10101(21)-10110(22)-10111(23)-11000(24)-11001(25)-11010(26)-11011(27)-11100(28)-11101(29)-11110(30)-11111(31)
可以看到我们如果说有五个手指最多数到31
2.计算机中的进制
在计算机中有数以万计的晶体管,他们就像灯泡一样开着或者关着,
灯泡关了我们记为0
灯泡开了我们记为1
这就是我们现在知道的二进制数字或位(bit)
OK,这里是一个数字

很明显当然是一百二十三,所以我们都有一种直觉,但不一定是一百二十三,我们只是给这些数字的位置赋予了意义,在小学的时候我们就知道最右边的数字是个位,依次是十位,百位,所以这个数的值推算出来就是100*1 + 10*2 + 1*3 = 123
因此我们理所当然的认为数字是123,这就是所谓的十进制

三、二进制
从上面可知,我们把灯泡开设为1,关设为0
我们该如何表示3这个数呢?
刚开始我们用一个灯泡先试试
0 - 1 可以看到我们最多表示到1
我们再加一个灯泡试试
00 - 01(1)- 10 (2)- 11(3) 可以看到我们刚好可以表示到3
我们上面接触到了十进制和二进制让我们来看一看运算的差别吧
这里是十进制的图
这里是二进制的图
所以说不管今天的硬件或软件有多花里胡哨,它实际上知识归结为表示信息和指示,包括电脑和电话,类似的东西真的只是在这些相同的信息上操作,是否以0和1实现。
我们有一个规定,事实证明,使用三个bit(比特),一次三个0和1实际上并不那么有用,所以我们有了一个新的规定byte(字节),它知识一个更有用的计量单位,刚好是2的2/3次方,一个1byte(字节)=8bit(比特)
我们可以想象一下如果一个byte(字节)里的八个bit(比特)都是1,那么它换算成十进制是多大呢?
11111111
计算过程大概是这样的
四、计算机中表示字母(Ascii码)
那么问题来了我们如何在计算机中表示字母A呢?
我们可以给每个字母分配一个数字,可能0是A,1是B,也可能1是A,2是B,只要我们都同意,这并不重要。
处于种种原因,我们设计这个系统的人类用65这个数字代表了A
这是一个被称为ASCII的系统(美国信息交换标准代码)
这里是ASCII表
它只是一堆 列 ,向我们展示字母和数字之间的映射
附加:unicode
有些人可能在微信上会发Emoji(表情符号),即使他们看起来像照片,它实际上是屏幕上的照片,是用像ASCII码一样的东西来代表的,他的规则叫Unicode,所以unicode是一个超集,也就是说人类前端时间意识到仅仅用8位来代表字母表中的字母肯定不是很好,所以unicode用的不仅仅是8bit,它有时每个byte用的是16bit,甚至是32bit…






655

被折叠的 条评论
为什么被折叠?



