0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机在硬件层面究竟是怎么表示二进制 1

jf_78858299 来源:小牛呼噜噜 作者:小牛呼噜噜 2023-02-01 15:28 次阅读

本篇文章来看看计算机在硬件层面究竟是怎么表示二进制的,CPU究竟是怎么实现的?通过本文的学习,我们也可以反过来明白为什么计算机会采用二进制了。

开关

我们在生活中,处处都是开关,比如控制灯的开关!

我们可以发现一个很简单的现象:

  1. 串联的开关,只有2个开关都闭合,灯泡才亮。这也就是布尔代数中"逻辑运算与"
  2. 并联的开关,只要有1个开关闭合,灯泡就会亮。这也就是布尔代数中"逻辑运算或"

我们以最简单的2个数,0和1来举个例子,写出其布尔代数的真值表:

结果
0 0 0
0 1 0
1 1 1
1 0 0
结果
0 0 0
0 1 1
1 1 1
1 0 1

电报和继电器

在人类信息传递发展的历史上,长途信息传递一直是非常困难的时,当时常见的方式有,比如人骑马送信,训练信鸽、点燃烽火,但信息传递的效率都非常低效。直到电报的出现,电报思想的正式成形是在19世纪早期,它的让人类传递信息的效率得到极大的提升。

电报利用电的特性来传递信息,早期设计复杂且不稳定,传递的信息复杂度又比较低,1837年美国人摩尔斯通过电磁感应改良了发报机,并发明了 摩尔斯电码 。他将电报划分为2种信号,短促的"点信号"和长一点的"划信号", 将把“点”当成“1”,把“划”当成“0”(这不就是二进制嘛),并编写了个“字典”将字母及数字编码一一对应,这样就能传递复杂的信息,在未来产生了巨大影响力,意味着现代通信的开始。

由于早期的电报传输,需要铺设电线,但是随着电线越长,其电阻就越大,电信号常常传输过程中被消耗点,这样接受方就无法接收到信息了。幸运的是,工程师发明了 继电器 ,其原理就是 接收微弱的信号,然后不断地通过新的电源重新放大已经开始衰减的原有信号,最后把它增强后发送出去

当开关是打开的话,灯泡是不亮的;但当开关是闭合的话, 电流流过围绕在铁棒上的线圈,会发生电磁效应,铁棒就具有了磁性,会将弹簧片吸下来,右边电路就通了,灯泡就会亮了。这样通过继电器,一段段放大信号,电报就能长距离传输信息了。

虽然继电器有放大信号的作用,但和开关一样继电器也可以串联或并联以执行逻辑中的简单任务,

继电器比起普通的开关的优势在于继电器无需直接被输入者控制,可以被其他继电器控制,这样就可以组合完成更复杂的操作

比如我们可以通过继电器实现: 当我们闭合开关时,灯泡关闭;当我们打开开关时,灯泡去点亮这种灯泡的状态和开关的闭合状态相反的操作,普通开关是无法实现这种操作的。这些电路物理的表象下隐藏的逻辑关系,一直没有被人发现。

直到1938年,克劳德·香农在麻省理工学院所写的硕士论文《A Symbolic Analysis of Relay and Switching Circuits》中阐述了继电器和开关电路中的符号分析之间的关系,他将开关、继电器、二进制、布尔代数联系起来。也就是发现 人类可以通过开关和继电器这些普通的电路,直接就能实现布尔代数各种逻辑运算操作 。这些继电器的组合被称为 逻辑门 ,他们构造基本的逻辑电路,也叫 门电路

门电路

上面是3种最最基本的门:

  1. 与门,两个开关只有同时打开,电流才会通过,灯泡才会亮
  2. 非门,当开关闭合时,电流会通过,灯泡会亮;开关打开,电流不能通过反而,灯泡熄灭
  3. 或门,两个开关中只要有一个打开电流就能通过,灯就会点亮

这些门其实就是一个个"开关"的抽象, 以后我们需要的各种复杂的逻辑都可以通过这3个门来实现,真的是非常奇妙 我们再来看一个常见的门:异或门XOR

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206571
  • 二进制
    +关注

    关注

    2

    文章

    707

    浏览量

    41250
  • 计算机
    +关注

    关注

    19

    文章

    6651

    浏览量

    84556
收藏 人收藏

    评论

    相关推荐

    计算机为什么使用二进制来表达

    在生活中,人们已经习惯用十进制来计数,0~9的发明是人类的伟大进步,从此就可以用0~9这十个数字的组合能表示任何大小的数字。于是初学计算机的人往往会问的问题是,计算机为什么使用
    的头像 发表于 10-30 15:44 590次阅读
    <b class='flag-5'>计算机</b>为什么使用<b class='flag-5'>二进制</b>来表达

    计算机硬件怎样执行二进制程序的

    计算机怎样将二进制数当成指令执行的?
    发表于 12-11 08:54

    单片机开发为什么要用二进制

    电路来进行计数,容易实现,容易运算,方便可靠。所以,计算机中,数据和其它字母、符号等都是以二进制的形式来表示并进行运算处理的,或者说,计算机
    发表于 12-10 10:55

    为什么计算机内部进行二进制运算,而不是十进制运算?

    闲来没事b站上看李永乐老师讲的这个视频,觉得挺有意思的。这篇文章主要是记一下笔记。本篇文章里面的数字若没有特殊指明,默认为二进制数字。你们有没有这样的疑问:为什么计算机内部进行二进制
    发表于 07-23 09:59

    计算机基础 精选资料分享

    计算机重要概念位:计算机表示信息的最小单位,表示一位二进制信息0,1,以b
    发表于 07-29 08:47

    1.8位二进制表示的无符号整数其相应的十进制数范围是多少

    内。错选、多选或未选均无分。1.8位二进制表示的无符号整数,其相应的十进制数范围是 ( )A.0~255B.1~256C.1~255D.0
    发表于 09-10 07:26

    进制数65用8位二进制表示时应为多少

    内。错选、多选或未选均无分。1.十进制数65用8位二进制表示时应为 ( )A. 11000001B B.OlOOOOOIBC. OlOOlOllBD.O0111011B2.十
    发表于 09-10 06:18

    微机中1K字节表示二进制位数是什么

    二进制位数是(D)。A、100() B、8x1000 C> 1024 D、8x10242. 计算机硬件能肓接识别和执行的只有(D )oA、高级语言B、符号语言C、汇编语言D、机器语言3. 用于保...
    发表于 09-15 09:29

    计算机的原码与反码及其补码是干啥的?

      补码的正数和反码以及原码,普通二进制的一致,没有区别,而负数实际是原有负数的反码上面加1  正数的原码,反码,补码是相同的  为什么要有这些码?  原码不方便进行计算机中有负数参
    发表于 04-13 17:04

    二进制编码和二进制数据

    二进制编码和二进制数据   二进制编码是计算机内使用最多的码制,它只使用两个基本符号"0"和"1",并且通过由这两个符号组成的
    发表于 10-13 16:22 4517次阅读

    关于二进制表示和补码计算的来龙去脉

    这 2 个既简单、又强大的数字。但是大部分人,对于二进制二进制计算、原码、反码以及补码的认识,仍处于机械的强制记忆阶段。尤其是对一些编码和计算,仍然处于模糊的认识阶段,例如: CPU
    的头像 发表于 06-07 14:30 2216次阅读

    计算机硬件层面究竟是怎么表示二进制 2

    本篇文章来看看计算机硬件层面究竟是怎么表示二进制的,CPU
    的头像 发表于 02-01 15:28 667次阅读
    <b class='flag-5'>计算机</b>在<b class='flag-5'>硬件</b><b class='flag-5'>层面</b><b class='flag-5'>究竟是</b>怎么<b class='flag-5'>表示</b><b class='flag-5'>二进制</b> 2

    计算机基础知识之二进制

    在C/Java/JavaScript等高级语言编写的程序中, 「数值」 、 「字符串」 和 「图像」 在计算机内部都是以 「二进制数值」 的形式来表现的 用二进制表示
    的头像 发表于 03-31 16:06 3351次阅读
    <b class='flag-5'>计算机</b>基础知识之<b class='flag-5'>二进制</b>

    计算机究竟是如何理解并执行我们所写的代码的呢?

    在编写了大量代码之后,不禁让人思考,计算机究竟是如何理解并执行我们所写的代码的呢?这个问题将引导我们深入了解计算机的内部工作原理,从二进制到逻辑电路,再到运算器和控制器的协同工作,探究
    发表于 09-05 09:54 292次阅读
    <b class='flag-5'>计算机</b><b class='flag-5'>究竟是</b>如何理解并执行我们所写的代码的呢?

    如何实现二进制和BCD码数据的相互转变?

    如何实现二进制和BCD码数据的相互转变? 二进制码是将十进制数字表示二进制数和十进制数的一种表示
    的头像 发表于 02-18 14:51 450次阅读