计算机是怎么跑起来的(1)

前言

前段时间有人在开发者头条推荐了几本书,其中包括《计算机是怎么跑起来的》《程序是怎么跑起来的》作者是日本的矢泽久雄。

看过之后收获很大,如书中所说很多程序员理解面向对象,精通Java php 等等,但是对于计算机和程序的基本运行原理却知之又

少,也许这就是一个程序员跟一个伟大程序员之间的差距之一吧。

本文将这两本书合二为一,加入自己的发散思维,算是读书笔记,也希望对阅读者能有所帮助,由于作者水平有限,错误不足之处

请指正。

文章没有具体的规划,大致内容以及顺序如下:

     0x00 认识计算机

     0x10 计算机硬件组成是这么简单

     0x20 计算机程序

     0x30 计算机操作系统

     0x40 现代计算机

 

0x00 认识计算机

     0x01 计算机是输入-运算-输出 的机器

      计算机通过I/O设备输入输出,如 鼠标,键盘,计算器的按键,游戏机把手都是输入设备,那么 计算器 和游戏机是不是计算机呢?

        是啊,当然是 绝对是,它有 输入-运算-输出,干嘛不是呢?

               CPU是负责运算的,那么CPU是怎么知道该算加减还是乘除呢?是程序,CPU按照程序的指令做运算

     0x02 程序是指令和数据的集合,怎么把程序发送给CPU,然后CPU又是怎么运算的呢?下面我就画一个超级简化的“CPU”来说明

             在制造这个“CPU”之前,我们只需要提前约定好下面规则

                     5V电压代表 1

                     0V电压代表 0

                     当C指令引脚电压为5V,CPU直接将D数据引脚的电压直接输出到O引脚

                     当C指令引脚电压为0V,CPU将D数据引脚的电压翻转后输出到O引脚

 

上图的”CPU“是我们自己制造的,我们输入不同的程序(指令引脚电压和数据引脚电压),就会得到不同的输出值

罗列得到如下表格:

C指令引脚输入值            D数据引脚输入值             O输出引脚输出值                     备注                     
1(指令为1) 0 0 输入程序10-->输出0
1(指令为1) 1 1 输入程序11-->输出1
0(指令为0) 0 1 输入程序00-->输出1
0(指令为0) 1 0 输入程序01-->输出0

 

 

 

 

 

下面我们开始编程:

11 10 00 01  这样CPU依次输出 1 0 1 0,如果接到LED灯上,就是 亮 灭 亮 灭

00 00 11 10  这样CPU依次输出  1 1 1 0 ,如果接到LED灯上,就是 亮 亮 亮 灭

看到这里你应该能理解了,所有的程序,无论是什么高级编程语言 java, php, c , python 最终都会转化成二进制的形式,然后通过高低电压接入CPU输入引脚

CPU计算后,再通过输出引脚输送出来。(真正的CPU复杂的多 有 I/O引脚  地址引脚  数据引脚 控制引脚 等等,不要着急这些我们后面都会了解的清清楚楚)。

    0x03 计算机跟人不同

           计算机的世界里只有高电压和低电压,也就是只有 1 和 0 ,而我们人类世界有1234567890,有赤橙红绿青蓝紫,有乘除,有汉字,这些计算机怎么表示,怎么计算呢?你肯定马上就能回答,用 二进制编码表示,二进制指令计算。

结束

下篇我们就做一个简单的计算机,有内存,有I/O口,有时钟,理解一个计算机到底是怎么运转的。

 

posted @ 2016-05-08 21:24  QQ是条狗  阅读(478)  评论(0编辑  收藏  举报