你知道1+1=2是如何在cpu中运作的么?----跟我到cpu内部去看看吧!(1) 【转载】

1+1=2

好吧,我承认这是小学生也会做的题目,但是作为一个程序员,或者是软件设计师,你知道1+1=2如何在计算机内部表示并执行的么?

在复习软件设计师中的计算机组成原理的时候这个问题一直在困扰着我,因为这里的内容涉及到了cpu运行原理.而对我们大多数人而言,cpu只不过是一个"黑盒子",具体里面是如何构造的我们并不是很清楚.

为了搞清楚,自己在这方面花费了一些功夫,查阅了相关的书籍和一些资料,逐渐的解开了cpu的内部的面纱,接下来我将通过图片来和大家一起到cpu的内部观察它是如何运作1+1=2的.

旅途开始:我将通过显微镜的旅游方式为大家展现.

  1. 电脑:作为程序员这是我们熟悉的不能在熟悉的家伙了.

  1. 主机是电脑重要的部件.

  1. 主机里面的重要组成部分--主板

  1. 主板中有整个电脑的核心

  1. 打开cpu外的散热器我们可以看到传说中的cpu

  1. cpu的内部构造,

  1. cpu主要是有晶体管构成的,下图为一个晶体管的示意图.

  1. 晶体管中有两个电流,左侧为输入流,右侧为输出流

  1. 在两个电流中间有一个白色的绝缘体,而被白色绝缘体包围的是半导体,主要是进行控制开关

  1. 而被白色绝缘体包围的是半导体,主要是进行控制开关,两端电流上面是金属导体.

  1. 当输入流通电的时候,并且半导体的开关是处于打开的状态下,那么输出流也处于通电状态

  1. 为了便于形象的理解,我们给每个晶体管"装上"一个开关,开表示1,关表示0,同时为晶体管的输入流通电.

  1. 现在拿出两个晶体管,将两个晶体管的输出流(右侧电流)通过导线相连,并在导线上可以想象安置一个小灯泡,有电则小灯泡亮,没有电则不亮.这就形成了著名的"逻辑门"中的"或"门,下图是一个"或"门的构造.

  1. 如果只打开第一个晶体管的开关,则小灯泡亮了.

  1. 如果只打开第二个晶体管的开关,则小灯泡也亮了.

  1. 如果两个开关都打开的话,则小灯泡还是亮了.

  1. 以上三种情况是解释的"或"们会有的三种情况,接下来通过一个小小的变化将导线同第一个晶体管的输出流与第二个晶体管的输入流相连,则形成了另一个逻辑门----"与"门.

  1. 如果只开第一个晶体管的开关的话,小灯泡不会亮.

  1. 如果只开第二个晶体管开关的话,小灯还是不会亮.

  1. 如果两个都开的话,小灯才能亮.

至此为止我们已经了解到了晶体管的基本工作原理,并且通过图像展现出来,了解到了什么是逻辑门,逻辑门中的"与门"和"或门"但是1+1是如何通过这些晶体管来表示,并在计算机中运行,我将会在下一篇文章中与你走完剩下的旅途.

下图为上面整个路线的一个宏观概念图.

时间: 2024-11-09 15:49:35

你知道1+1=2是如何在cpu中运作的么?----跟我到cpu内部去看看吧!(1) 【转载】的相关文章

如何在makfile中查看变量的值

在makefile中查看变量的取值是多少应该是一个比较麻烦的问题,但是本大神自己研究出一个十分方便的方法.这个方法十分简单.现在介绍如下 如果在一个十分复杂庞大的makefile文件中,有个地方用到一个变量SRC_FILE,你很想知道makefile运行到此处的时候这个变量的值为多少.那么你可以在这个变量的下面写两行东东: $(shell echo $(SRC_FILE) > readme.txt ) rrrrrrrrrrrrrrrrrrr 第一行其实是调用shell命令来将这个变量的值输入到r

如何在Angular2-cli中使用插件(不使用配置)

重要点: 要把插件放在src/assets文件中 如何在angular-cli中使用jquery插件 a.在index.html中引入 <script  src="./assets/jquery-1.8.3.min.js"></script> b. 在要使用jquery的组件中声明(XX.component.ts) declare var $ : any; c.导入onInit import { OnInit} from '@angular/core'; d.输

Excel技巧|如何在Excel中快速的批量将unix时间戳转化为北京时间

本文标签:  Excel技巧 unix时间戳转化北京时间 Excel时间戳转化北京时间 互联网杂谈 批量将将unix时间戳转化为北京时间 方法/步骤 单击要获得北京时间的那一列,右键,选择[设置单元格格式],在弹出的窗口中,左侧选择 [日期],右侧选择你想要的时间格式,点击确定. 选中其中一个单元格,输入公式 =(A2+8*3600)/86400+70*365+19 其中,A2是要转化的时间戳的单元格. 输入完公式,按下[回车键]. 该时间戳即转化为北京时间. 选中上面转化好的北京时间单元格,鼠

如何在Excel中少犯二(I)

作者:何明科链接:https://zhuanlan.zhihu.com/p/23472480来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 收到不少建议,要求开知乎Live来谈谈Excel.然而考虑到知识储备有限,还是先写文章来满足大家的需求,同时从特别窄的话题开始:"如何在Excel中少犯二".从这个话题开始的理由特别简单:首先,时常在别人的Excel数据模型中发现各种细小错误,哪怕作者花费再多的时间把图表搞得再精美,顿时对整个模型的结论产生怀疑:其次

如何在html中插入视频

如何在html中插入视频 1,插入优酷视频: 在优酷分享界面有个html代码,直接复制放入body中,定义div的align居中即可 2.插入本地视频:用video属性  用mp4格式 <video>标签的属性 src :视频的属性 poster:视频封面,没有播放时显示的图片 preload:预加载 autoplay:自动播放 loop:循环播放 controls:浏览器自带的控制条 width:视频宽度 height:视频高度

如何在java中使用sikuli进行自动化测试

很早之前写过一篇介绍sikuli的文章.本文简单介绍如何在java中使用sikuli进自动化测试. 图形脚本语言sikuli sikuli IDE可以完成常见的单击.右击.移动到.拖动等鼠标操作,java引用sikuli-script.jar同样可以执行这些常见的鼠标操作,因此即可方便的编写java实现识别图片并模拟点击/拖动目标控件. sikuli-script.jar:http://download.csdn.net/download/hqd1986/4557974 将sikuli-scri

安卓开发_WebView如何在Fragment中使用

之前学习了如何在activity中使用WebView控件来显示网页. 在我的实际开发中,有需要在Fragment中用到WebView控件的,那么就百度学习了一下 其实很简单,但是当然不是和在Activity中使用的方法一样 具体看代码 1 package com.example.qunxiong; 2 3 import android.os.Bundle; 4 import android.support.v4.app.Fragment; 5 import android.view.Layout

如何在iOS中使用Block

如何在iOS中使用Block Block可以帮助我们组织独立的代码段,并提高复用性和可读性.iOS4在UIKit中引入了该特征.超过100个的Apple API都使用了Block,所以这是一个我们必须开始熟悉的知识. Block是什么样的? 你可以使用^操作符来声明一个Block变量,它表示一个Block的开始. int num1 = 7; int(^aBlock)(int) = ^)int num2) { return num1+nunm2; }; 在如上代码中我们将Block声明为一个变量,

如何在Javascript中利用封装这个特性

对于熟悉C#和Java的兄弟们,面向对象的三大思想(封装,继承,多态)肯定是了解的,那么如何在Javascript中利用封装这个特性呢? 我们会把现实中的一些事物抽象成一个Class并且把事物的属性(名词)作为Class的Property把事物的动作(动词)作为Class的methods.在面向对象的语言中(C#等)都会有一些关键字来修饰类或者属性(Private,public,protect),这些关键词描述了访问的权限,不多做解释.泗阳县民用航空局 我们来看看Javascript的易变的特性