计算机科学速成课1

继电器---真空管--晶体管,让电路关闭的越来越快。

如何用晶体管做计算?

  逻辑门,not--or--and等

  晶体管有三根线,2根电极和1根控制线,控制线通电时,电流就可以从一个电极流向另一个电极。将控制线当输入,底部电极用于输出,所以一个晶体管有一个输入和一个输出

              

  这样的话,打开输入,输出也会打开(输入为true,输出为true),关闭输入,输出也会关闭(输入为false,输出为false),对应的真值表:

  

  实现NOT GATE

    

   实现ADD GATE

    

  实现OR GATE

     

计算机如何存储和表示数字?

  位来表示(0和1),1bytes = 8bits,32位计算机或64位计算机意味着是一块块处理数据,每块是32位或64位

  计算机如何存储和表示字母,给字母编码,用数字来表示 ASCII--Unicode

计算机如何操作数字?

  由计算机的算术逻辑单元处理(ALU),包括算数单元和逻辑单元

  算数单元:负责计算机里的所有数字操作,如半加器和全加器组成的加法器(由一大堆逻辑门巧妙的连接在一起)

  逻辑单元:执行逻辑操作,ADD--OR--NOT等操作

   计算出之后如果扔掉了就没什么意义了,得找个办法存起来,这就用到了计算机内存了

 寄存器和内存

  逻辑门实现能存0和1的电路

  

  ADD-OR锁存器实现存储1位的信息

   

  完善一下,将两个输入改成一个输入,添加一个允许写入线,得到门锁

  

  抽象一下,把门锁放到一个盒子里,这个盒子能够存储一个bit

  

  允许输入线输入1,打开门,数据输入1,1就可以保存在门锁中,数据输出是1,此时关闭允许写入线,无论数据输入是1还是0,门锁中保存的都是1,输出也永远都是1。

   如果并排放8个锁存器,那就可以存8位信息,比如一个8bit的数据,一组这样的锁存器就叫做寄存器。

  

  写入寄存器之前,要先启用里面所有的锁存器。用一根线连接所有的“允许输入线”,将之设置为1,允许写入

   

  

  

  如果这样并排放置,以64位寄存器为例,需要64根数据线,64根连到输出端,一根线启用所有的锁存器,加起来需要64+64+1 = 129根线。就要存256位就需要256+256+1 = 513条线,这样线太多,解决方法就是矩阵。

  在矩阵中,不是并列排放锁存器,而是做成网格

  

  

  启用某个锁存器,就打开相应的行线和列线就好

  

  我们只想打开交叉处锁存器的允许写入线,所有其他的锁存器保持关闭。看下图,只有行线和列线均为1,ADD门才会输出1,用一根允许写入线连所有的锁存器,所以为了让该锁存器允许写入,行线和列线以及允许写入线都必须是1,每次只有一个锁存器会这样,这样就可以只用一个数据线来连接所有的锁存器来传输数据,因为只有一个锁存器会启用,只有那个会存数据,其他锁存器会忽略数据线上的值,因为没有允许写入。同样可以用类似的技巧,做允许读取线来读数据,从一个指定的锁存器中读取数据。

  所以对于256位的存储,只需要1条数据线传输数据,1条允许写入线,1条允许读取线,还有16条行线+16条列线用于选择锁存器,即需要1+1+1+16+16 = 35条线。相比于并排排列的513条线,节省许多。

  

  接下来就需要某种方法来唯一指定交叉点的地址,比如刚刚存了一位的地址是“12行8列”,由于最多只有16行(16列),所以可以用4bit来表示行数(列数),这样行地址(12)就可以表示成1100,列地址(8)表示成1000,即12行8列的地址就可以表示成11001000。计算机将地址转化成对应的行列时需要用到多路复杂器。

   将256位内存抽象成一个整体,如下图,其中:

    输入一个8位的地址,4位代表列,4位代表行

    允许写入线和允许读取线

    一条数据线,用于读/写数据

  

  256位的内存也没法做成什么事,所以还要扩大规模。将之并排放置,像寄存器一样,一行8个,这样每个存一位,一行8个就可以存一个8位的数字,也就是可以存一个字节。为了存一个8位的数字,同时给这8个256位内存一样的地址,每个地址存一位,这就意味着总共可以存储256个字节。

  

  抽象一下,将之看成一个整体的可寻址内存,有256个地址,每个地址能读或写一个8位值

  

  这样不断的把内存打包到更大的规模,就可以扩展到上兆字节(MB)和千兆字节(GB)的现代计算机,随着内存地址的增多,内存地址也必须增长,8位最多可以代表256个内存地址,更多字节的存储就需要32位的地址。

  内存的一个重要的特性是:可以随时访问任何位置,因此称之为“随机存取存储器”(Random Access Memory或RAM)

   看一下下图的内存,上面焊了8个内存模块

  

  打开一个,然后放大,会看到32个内存方块

  

  放大其中一个方块,看到有4个小块

  

  在放大,就可以看到存储“位”的矩阵,这个矩阵是128位 * 64位,总共8192位,一层层叠加,8192 * 4 * 32 * 8 = 800万位,也就是1兆字节(1 MB)。

  

  矩阵层层嵌套,来存储大量的信息。就像计算机中的很多事情,底层都很简单,让人难以理解的是,一层层精妙的抽象。

 

转载于:https://www.cnblogs.com/zfyang2429/p/10986997.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于计算机专业的学生而言,参加各类比赛能够带来多方面的益处,具体包括但不限于以下几点: 技能提升: 参与比赛促使学生深入学习和掌握计算机领域的专业知识与技能,如编程语言、算法设计、软件工程、网络安全等。 比赛通常涉及实际问题的解决,有助于将理论知识应用于实践中,增强问题解决能力。 实践经验: 大多数比赛都要求参赛者设计并实现解决方案,这提供了宝贵的动手操作机会,有助于积累项目经验。 实践经验对于计算机专业的学生尤为重要,因为雇主往往更青睐有实际项目背景的候选人。 团队合作: 许多比赛鼓励团队协作,这有助于培养学生的团队精神、沟通技巧和领导能力。 团队合作还能促进学生之间的知识共享和思维碰撞,有助于形成更全面的解决方案。 职业发展: 获奖经历可以显著增强简历的吸引力,为求职或继续深造提供有力支持。 某些比赛可能直接与企业合作,提供实习、工作机会或奖学金,为学生的职业生涯打开更多门路。 网络拓展: 比赛是结识同行业人才的好机会,可以帮助学生建立行业联系,这对于未来的职业发展非常重要。 奖金与荣誉: 许多比赛提供奖金或奖品,这不仅能给予学生经济上的奖励,还能增强其成就感和自信心。 荣誉证书或奖状可以证明学生的成就,对个人品牌建设有积极作用。 创新与研究: 参加比赛可以激发学生的创新思维,推动科研项目的开展,有时甚至能促成学术论文的发表。 个人成长: 在准备和参加比赛的过程中,学生将面临压力与挑战,这有助于培养良好的心理素质和抗压能力。 自我挑战和克服困难的经历对个人成长有着深远的影响。 综上所述,参加计算机领域的比赛对于学生来说是一个全面发展的平台,不仅可以提升专业技能,还能增强团队协作、沟通、解决问题的能力,并为未来的职业生涯奠定坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值