![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机基础课
文章平均质量分 77
这就是编程
十年互联网开发老兵,前阿里巴巴技术专家,面试官
展开
-
厉害 !在《我的世界》里从零打造一台计算机有多难?复旦本科大神花费一年终于实现!...
一块小小的CPU里有多少个晶体管?几十亿个。单枪匹马造出一个CPU乃至完整的电脑需要多长时间?有位大牛在《我的世界》游戏里用实际行动回答了这个问题:可能要花费一年多。这篇造计算机的教程一经转载就在知乎上火了。这并不是一篇游戏攻略,而是来自复旦大学的季文瀚,写的一篇课程论文。他在大二时就有了大胆的设想,经过一年的精心营造...原创 2019-12-02 17:55:40 · 744 阅读 · 0 评论 -
CPU的核心原理—(计算机基础课二十一)
上一篇:CPU最重要的指令JUMP—(计算机基础课二十)前面我们这里假设的 CPU 很基础,所有指令都是 8 位,操作码只占了前面 4 位,即便用尽 4 位,也只能代表 16 个指令,而且我们有几条指令,是用后 4 位来指定内存地址,因为 4 位最多只能表示 16 个值,所以我们只能操作 16 个地址,这可不多。我们甚至不能 JUMP 17,因为 4 位二进制无法表示数字 17。...原创 2019-05-15 22:57:10 · 986 阅读 · 2 评论 -
如何榨干CPU的所有价值
计算机基础课第23期分享转载请联系授权(微信ID:qianpangzi0206)01指令流水线一种提升性能的方法叫 "指令流水线",想象下你要洗一整个酒店的床单,但只有 1 个洗衣机, 1 个干燥机。选择1:按顺序来,放洗衣机等 30 分钟洗完。然后拿出湿床单,放进干燥机等 30 分钟烘干,这样1小时洗一批,另外一说:如果你有 30 分钟就能烘干...原创 2019-05-24 11:30:00 · 2000 阅读 · 1 评论 -
计算机最早提高性能的方法
计算机基础课第 22期分享转载请联系授权(微信ID:qianpangzi0206)01早期计算机的提速方式随着本系列进展,我们知道计算机进步巨大,从 1 秒 1 次运算,到现在有千赫甚至兆赫的CPU,这是很大的计算量。早期计算机的提速方式是减少晶体管的切换时间。晶体管组成了逻辑门,ALU 以及前面的其他组件。但这种提速方法最终会碰到瓶颈,所以...原创 2019-05-21 18:30:11 · 1537 阅读 · 2 评论 -
程序如何"进入"计算机
前面我们把重点放在计算机的原理,怎么从内存读写数据,执行操作,比如把两个数字加在一起。还简单讲了下指令的执行,也就是计算机程序。但我们还没讲的是:程序如何"进入"计算机。原创 2019-05-31 11:49:56 · 4120 阅读 · 6 评论 -
从汇编语言到高级编程语言的演变
新的编程语言在不断诞生,新语言想用更聪明的抽象,让某些方面更容易或更强大或利用新技术和新平台带来的优势,让更多人能快速做出美妙的事情。原创 2019-06-06 15:32:33 · 6601 阅读 · 5 评论 -
函数的强大之处
函数的强大之处和现代编程的核心。原创 2019-06-12 23:12:38 · 476 阅读 · 0 评论 -
程序如何“进入”计算机(二)
可以吸入一张卡片,把卡片内容写进内存,如果放了一叠卡片,读取器会一个个写进内存。一旦程序和数据写入完毕,电脑会开始执行。原创 2019-05-31 09:58:51 · 1573 阅读 · 0 评论 -
二进制如何变成汇编语言
但在硬件层面编程非常麻烦,所以程序员想要一种更通用的方法编程,一种"更软的"媒介,没错,我们要讲软件!原创 2019-06-03 22:27:22 · 3927 阅读 · 0 评论 -
算法入门
计算机基础课第30期分享转载请联系授权(微信ID:qianpangzi0206)前两周,我们"初尝"了高级编程语言(比如 Python 和 Java),我们讨论了几种语句 - 赋值语句,if 语句,循环语句,以及把代码打包成 "函数",比如算指数。重要的是,之前写的指数函数只是无数解决方案的一种,还有其它方案。01算法的定义即使结果一致,有些算法...原创 2019-06-25 10:03:44 · 2734 阅读 · 3 评论 -
计算机科学家的核心
作为未来的计算机科学家你可能会问:有没有更高效的排序算法?原创 2019-06-25 23:10:31 · 310 阅读 · 0 评论 -
数据存在内存里的格式是什么?
算法处理的数据存在内存里的格式是什么?原创 2019-07-12 08:55:59 · 1246 阅读 · 1 评论 -
图灵机的最简单解释
今天,我们来看一位对计算机理论贡献巨大的人,计算机科学之父——阿兰·图灵。原创 2019-08-02 12:01:01 · 2804 阅读 · 0 评论 -
图灵的贡献与悲剧
但图灵与悲剧密不可分,所以他的故事值得一提原创 2019-08-19 11:50:00 · 1160 阅读 · 0 评论 -
既然做开发 35 岁劝退,为什么还要拼命学习编程知识
△向上生长, TO BE TO UP. 程序员成长充电站△转载请联系授权(微信ID:qianpangzi0206)阅读本文大概需要 5分钟今天看到一个帖子,在讨论35岁的职业发展问题,发在这里看看大家的想法。事情是这样的,我今天下午在某电商挑几本技术书,准备下单,然后被我一个同事看到了 他跟我说,平时上班已经够累了,为什么下班了还要继续看书。而且...原创 2019-08-24 09:01:47 · 588 阅读 · 0 评论 -
体会硬件性能的爆炸性增长
聊了软件从早期编程方式到现代软件工程,在大概50年里软件从纸带打孔变成面向对象编程语言在集成开发环境中写程序。但如果没有硬件的大幅度进步软件是不可能做到这些的。原创 2019-08-26 22:23:53 · 242 阅读 · 0 评论 -
一步步做个集成电路(IC)
计算机基础课第38期分享阅读本文大概需要4分钟01光刻法下面用一个简单例子,来做一片集成电路(IC)我们从一片硅开始,叫"晶圆"长得像薄饼干一样我们在之前讨论过硅很特别,它是半导体,它有时导电,有时不导电, 我们可以控制导电时机,所以硅是做晶体管的绝佳材料。我们可以用晶圆做基础,把复杂金属电路放上面,集成所有东西,非常适合做集成电路。...原创 2019-08-27 22:32:33 · 1260 阅读 · 0 评论 -
操作系统极简入门
计算机基础课第40期分享原创 2019-09-16 12:51:28 · 2122 阅读 · 3 评论 -
CPU怎么去执行程序的?—(计算机基础课十八)
上一篇: CPU处理程序的三个阶段——(计算机基础课十七)上一篇讲了CPU处理程序的三个阶段,这一节将怎么用这三个阶段去执行一条条程序的。从 "取指令" 开始,"指令地址寄存器" 现在的值是 1 到 "解码" 阶段! 0001 是 LOAD B 指令 从 RAM 里把一个值复制到寄存器 B,这次内存地址是 1111,十进制的 15。现在到 "执行阶段“,”控制单元" 叫 RAM...原创 2019-05-07 21:48:47 · 1522 阅读 · 5 评论 -
CPU最重要的指令JUMP—(计算机基础课二十)
上一篇:简单的cpu指令—(计算机基础课十九)现在用 JUMP 让程序更有趣一些。我们还把内存中 3 和 14 两个数字,改成 1 和 1,现在来从 CPU 的视角走一遍程序。 首先 LOAD_A 14,把 1 存入寄存器A(因为地址 14 里的值是 1)。 然后 LOAD_B 15,把 1 存入寄存器B\N(因为地址 15 里的值也是 1)。 然后 ADD...原创 2019-05-14 22:30:48 · 8875 阅读 · 2 评论 -
CPU处理程序的三个阶段——(计算机基础课十七)
上一篇:计算机怎么做到存储内容的下—(计算机基础课十六)今天我们讲 处理器,提示下 - 这集可能是最难的一节, 所以一旦你理解了,就会变得超厉害。我们已经做了一个算术逻辑单元(ALU)输入二进制,它会执行计算。我们还做了两种内存: 寄存器 - 很小的一块内存,能存一个值 ,之后我们增大做出了 ,RAM 是一大块内存,能在不同地址存大量数字,现在是时候把这些放在一起,组建计算机的...原创 2019-05-06 17:01:16 · 4201 阅读 · 3 评论 -
为什么计算机会出现乱码—(计算机基础课十二)
上一篇:如何存储和表示数字—(计算机基础课十一)好了,聊够数字了,但你的名字是字母组成的。所以我们也要表示文字,今天我们继续聊。与其用特殊方式来表示字母,计算机可以用数字表示字母,最直接的方法是给字母编号:A是1,B是2,C是3,以此类。著名英国作家 弗朗西斯·培根(Francis Bacon),曾用 5位序列来编码英文的 26 个字母。在十六世纪传递机密信件,五位(bit)可以...原创 2019-04-09 21:46:30 · 605 阅读 · 0 评论 -
计算机如何进行加减乘除计算—(计算机基础课十三)
上一篇:为什么计算机会出现乱码—(计算机基础课十二)ALU上节,我们谈了如何用二进制表示数字,比如二进制00101010是十进制的42,表示和存储数字是计算机的重要功能,但真正的目标是计算,有意义的处理数字。比如把两个数字相加,这些操作由计算机的"算术逻辑单元"处理。但大家会简称:ALU。ALU是计算机的数学大脑,等你理解了ALU的设计和功能之后,你...原创 2019-04-15 17:05:00 · 1288 阅读 · 0 评论 -
计算机如何进行逻辑计算—(计算机基础课十四)
上一篇: 计算机如何进行加减乘除计算—(计算机基础课十三)我们现在讲ALU的另一半:逻辑单元。逻辑单元执行逻辑操作比如之前讨论过的AND,OR和NOT操作,它也能做简单的数值测试,比如一个数字是不是负数,例如,这是检查ALU输出是否为0的电路,它用一堆OR门检查其中一位是否为1,哪怕只有一个Bit(位)是1,我们就知道那个数字肯定不是0,然后用一...原创 2019-04-16 17:05:00 · 682 阅读 · 0 评论 -
计算机怎么做到存储内容的上—(计算机基础课十五)
上一篇:计算机如何进行逻辑计算—(计算机基础课十四)上节,我们用逻辑门做了个简单 ALU,它能执行算术(Arithmetic)和逻辑(Logic)运算,ALU 里的 A 和 L 因此得名,当然,算出来之后如果扔掉就没什么意义了。得找个方法存起来,可能还要进行多个连续操作,这就用到计算机内存了。如果你在主机上打过一场长时间的对局,或玩困难模式的 "扫雷",然后狗跑过来,被电源线绊...原创 2019-04-22 22:39:11 · 534 阅读 · 1 评论 -
计算机怎么做到存储内容的下—(计算机基础课十六)
上一篇: 计算机怎么做到存储内容的上—(计算机基础课十五)寄存器寄存器能存一个数字,这个数字有多少位,叫"位宽",早期电脑用 8 位寄存器,然后是 16 位,32 位,如今许多计算机都有 64 位宽的寄存器。写入寄存器前,要先启用里面所有锁存器,我们可以用一根线连接所有 "允许输入线", 把它设为 1,然后用 8 条数据线发数据,然后将 "允许写入线" 设回 0,现在 8 位的值就存...原创 2019-04-23 21:49:55 · 565 阅读 · 1 评论 -
算盘和步进计算器(计算机基础课二)
但深入之前,我们应该从计算的起源讲起,虽然电子计算机才出现不久,但人类对计算的需求早就有了公认最早的计算设备是算盘。发明于"美索不达米亚",大约公元前 2500 年,它是手动计算器,用来帮助加减数字,它是手动计算器,用来帮助加减数字,它存储着当前的计算状态,类似于如今的硬盘。人们制造算盘是因为社会的规模已经超出个人心算的能力社会的规模已经超出个人心算的能力。例如,一个村庄...原创 2019-03-19 11:05:00 · 2516 阅读 · 5 评论 -
计算机是当今世界的命脉(计算机基础课一)
计算机基础课第一节如果突然关掉所有的计算机,电网会关闭,车辆会相撞,飞机会坠毁净水厂会关闭,证券市场会停止运作装满食物的卡车不知运往何方,员工得不到薪水甚至很多和计算机无关的东西,例如 DFTBA 的 T 恤和我现在坐的椅子也都是在计算机管理的工厂中制造的,计算机改变了我们生活中几乎所有方面。我们也不是第一次遇到推动全球发展的科技了工业革命中生产能力的提高大幅提升了农业,工业,...原创 2019-03-18 17:37:30 · 673 阅读 · 0 评论 -
计算表和差分机(计算机基础课三)
计算机基础课第三节计算表不幸的是,即使有机械计算器,许多现实问题 依然需要很多步,算一个结果可能要几小时甚至几天而且这些手工制作的机器非常昂贵,大部分人买不起。所以在 20 世纪以前,大部分人会用预先算好的计算表。这些计算表由之前说的 "人力计算器" 编撰,如果你想知道 867,5309 的平方根,与其花一整天来手摇 "步进计算器",你可以花一分钟在表里找答案。速...原创 2019-03-20 12:09:52 · 1997 阅读 · 0 评论 -
自动计算机和IBM(计算机基础课四)
自动计算机然而,这种 "自动计算机" 的概念,计算机可以自动完成一系列操作,是个跨时代的概念,预示着计算机程序的诞生。英国数学家 Ada Lovelace 给分析机写了假想的程序,她说:"未来会诞生一门全新的,强大的,专为分析所用的语言"因此 Ada 被认为是世上第一位程序员。分析机激励了(可以这么讲)第一代计算机科学家。这些计算机科学家把很多 Cha...原创 2019-03-21 17:03:00 · 534 阅读 · 0 评论 -
“bug”的来源 —(计算机基础课五)
更强的计算能力20 世纪初,当时的早期计算设备都针对特定用途 。比如 制表机,大大推进了政府和企业。它们帮助, 甚至代替了人工。然而人类社会的规模 在以前所未有的速度增长,20世纪上半叶,世界人口几乎翻倍一战动员7千万人,二战1亿多人。全球贸易和运输更加紧密,工程和科学的复杂度也达到新高,我们甚至开始考虑登陆其他行星。复杂度的增高导致数据量暴增,人们需要更多自动化...原创 2019-08-26 09:44:25 · 685 阅读 · 3 评论 -
计算机基础课综述及其目录
看似最枯燥、最基础的东西往往具有最长久的生命力。所以,对于我们程序员成长过程中来说,最重要的是什么?对,就是那些最基础的知识。不要天天谈什么框架,什么库,框架每年层出不穷,可是扒下框架那层炫酷漂亮的外衣,里面还是那些最基础的知识和原理。前几天我面试的一个程序员,对计算机很多基础知识都不知道,这些是计算机的常识性东西。在程序员交流中,大家默认彼此是知道这些常识内容的。今...原创 2019-03-18 17:37:30 · 867 阅读 · 5 评论 -
第一个可编程的电子计算机—(计算机基础课六)
上一篇 :“bug”的来源 —(计算机基础课五) 二级管在 1904 年,英国物理学家 "约翰·安布罗斯·弗莱明"开发了一种新的电子件叫"热电子管"。把两个电极装在一个气密的玻璃灯泡里,这是世上第一个真空管,其中一个电极可以加热,从而发射电子,这叫 "热电子发射"。另一个电极会吸引电子,形成"电龙头"的电流,但只有带正电才行,如果带负电荷或中性电荷,电子就没办法被吸...原创 2019-03-26 22:09:51 · 2401 阅读 · 0 评论 -
硅谷的由来—(计算机基础课七)
上一篇:第一个可编程的电子计算机—(计算机基础课六)晶体管为了降低成本和大小,同时提高可靠性和速度,我们需要一种新的电子开关。1947 年,贝尔实验室科学家 \N John Bardeen,Walter Brattain,William Shockley发明了晶体管。一个全新的计算机时代诞生了!晶体管的物理学相当复杂,牵扯到量子力学。所以我们只讲基础,晶体...原创 2019-03-27 11:20:00 · 541 阅读 · 0 评论 -
简单的cpu指令—(计算机基础课十九)
上一篇: CPU怎么去执行程序的?—(计算机基础课十八)上周我们把 ALU, 控制单元, RAM, 时钟 结合在一起,做了个基本,但可用的"中央处理单元", 简称 CPU。它是计算机的核心,我们已经用电路做了很多组件。这次我们给 CPU 一些指令来运行。CPU 之所以强大,是因为它是可编程的 -如果写入不同指令,就会执行不同任务,CPU 是一块硬件,可以被软件控制!...原创 2019-05-13 22:27:14 · 953 阅读 · 0 评论 -
为什么计算机用二进制—(计算机基础课八)
上一篇:硅谷的由来—(计算机基础课七)这周布尔逻辑和逻辑门内容,很重要,请细细品味。今天我们开始"抽象"的旅程,不用管底层细节,把精力用来构建更复杂的系统。上一节,我们谈了计算机最早是机电设备,一般用十进制计数,比如用齿轮数来代表十进制,再到晶体管计算机。原因一幸运的是,只用 开/关 两种状态也可以代表信息,这叫二进制。意思是"用两种状态表示",就像自行车...原创 2019-04-01 21:39:48 · 1000 阅读 · 0 评论 -
NOT,AND,OR—(计算机基础课九)
上一篇:为什么计算机用二进制—(计算机基础课八)请反复看,理解这个思想很重要,在编程的时候,经常会用到。NOTNOT 操作把布尔值反转,把 true 进行 NOT 就会变成 false,反之亦然,我们可以根据 NOT 操作的输入和输出,做出这个表。酷的地方是 - 用晶体管可以轻松实现这个逻辑。上节说过,晶体管只是电控制的开关,有 3 根线:2 根电极和 1 ...原创 2019-04-02 22:54:04 · 2153 阅读 · 5 评论 -
XOR—(计算机基础课十)
上一篇:NOT,AND,OR—(计算机基础课九)XORXOR 就像普通 OR,但有一个区别:如果 2 个输入都是 true,XOR 输出 false。想要 XOR 输出 true ,一个输入必须是 true,另一个必须是 false。就像你出去吃晚饭,你点的饭要么配沙拉,要么配汤,你不能两个都要!用晶体管实现 XOR 门有点烧脑子,但我可以展示一下。 怎么用前面提到...原创 2019-04-03 11:39:24 · 509 阅读 · 1 评论 -
如何存储和表示数字—(计算机基础课十一)
上一篇:XOR—(计算机基础课十)今天,我们讲计算机如何存储和表示数字,所以会有一些数学,不过别担心,你们的数学水平绝对够用了。上节我们讲了,怎么用晶体管做逻辑门,逻辑门可以判断布尔语句,布尔代数只有两个值:True 和 False。但如果只有两个值,我们怎么表达更多东西?这就需要数学了。正数上节提到,1 个二进制值可以代表 1 个数,我们可以把真和假 ,当做 1 和...原创 2019-04-08 22:02:32 · 613 阅读 · 1 评论