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

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

3天内不再提示

三种基本逻辑运算介绍

CHANBAEK 来源:头条号底层技术栈 作者:头条号底层技术栈 2023-03-23 13:57 次阅读

模拟电路可以利用三极管的导通 / 截止实现数字状态的切换,从而实现0和1的逻辑运算。

逻辑运算常用的有3种:与、或、非,它们都是1个二进制位的位运算。

在位运算的基础上,可以进一步实现加减运算。

位运算的特点是,多个位之间是无关的。

加减运算有进位和借位,多个位之间是相关的。

这里简单的给一下它们的电路:

1,与门,

pYYBAGQb6mCAS4pyAACy4xHE10U431.jpg

电路,与门

1个电阻和2个二极管组成的与门,如上图。

2个二极管只要有1个导通(低电位0),输出电位就是0.7v,为低电位0。

0 & 1 == 1 & 0 == 0.

2个二极管都截止时(高电位1),输出等于电源电压,为高电位1。

1 & 1 == 1.

2,或门,

或门正好反过来,二极管接近电源正极,电阻接近电源负极。

poYBAGQb6mGALCsLAACsjsyAuM0784.jpg

电路,或门

2个二极管里只要有一个导通(高电位1),输出端就是高电位1。

1 | 0 == 0 | 1 == 1.

2个二极管都截止时,输出端是低电位0。

0 | 0 == 0.

二极管接到电源正极上就会导通,接到负极上就会截止。

3,非门,

非门,利用的是三极管的反相放大器

当b极为高电位1时,三极管导通,电源电压大部分加在上拉电阻上,输出为低电位0。

反之,输出为高电位1。

pYYBAGQb6mKACz7jAACuVfpiODw455.jpg

电路,非门

位运算的电路都是很简单的,因为多个位之间不相关。

只要把多个电路并联起来,每个处理1个二进制位,就可以实现32位的运算。

4,加法,

加法因为有进位,比单纯的位运算要复杂一点。

0 + 0 = 0,

1 + 0 = 1,

0 + 1 = 1,

1 + 1 = 10,

二进制加法的前3种情况就是或运算,所以1个或门就可以处理前3种情况。

复杂的是1+1 = 10的情况,要处理进位:个位要变成0,十位要进位1。

主要说说这种情况:

下图是我随手画的二进制加法的电路

poYBAGQb6mOAKZfIAAC-tgTiZ7o057.jpg

电路,加法

蓝色的电阻和2个向右的二极管组成或门,处理前3种情况:

0 + 0时,个位输出和三极管的b极都是0,结果为0;

0 + 1 == 1 + 0时,个位输出为1,三极管的b极为0,结果为1。

最后一种情况,1 + 1 == 10 时:

红色的电阻和2个向左的二极管组成与门,当2个加数都是1时,三极管的b极为高电位1,

这时三极管导通,三极管的c极为低电位0;

或门的输出为1,电流将沿着图中箭头的流向,经过三极管的c-e极流入电源负极,

个位输出与三极管的c极电压一样,为低电位0;

十位输出与三极管的b极电压一样,为高电位1。

这样就实现了1个二进制位的加法运算:1 + 1 = 10.

如果有多个二进制位,就把上图的电路并联起来,同时把(十位的)进位输出转到下一级的输入,继续更高位的运算。

位数越高电路越复杂,因为加法的各个位之间是可以进位的。

所以,在数字电路层面不适合处理复杂的逻辑,因为仅仅是加减乘除的实现就已经很复杂了。

所以,计算机的设计必然是分层的:

1)数字电路仅仅实现汇编代码级的逻辑,

2)更复杂的程序逻辑,放在C语言层面,

3)最复杂的逻辑,放在高级语言层面,毕竟C语言是个挂着高级语言的名头的大号汇编如果不做分层设计,电子工程师要考虑的情况就太多了,需求的耦合度太大!

一旦耦合度大了之后,工程师们就会考虑分层分模块的设计。

编译器被分为词法、语法、语义、中间代码、机器码、目标文件生成、连接器,也是因为不这么划分的话耦合度太大了。

汇编代码难写,是因为它过于底层,与人类平时的思维方式差别很大。

但从数字电路的角度来看,汇编代码已经很上层了。

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

    关注

    141

    文章

    3497

    浏览量

    119117
  • 模拟电路
    +关注

    关注

    124

    文章

    1483

    浏览量

    101875
  • C语言
    +关注

    关注

    180

    文章

    7533

    浏览量

    128773
  • 数字电路
    +关注

    关注

    192

    文章

    1397

    浏览量

    79752
  • 逻辑运算
    +关注

    关注

    0

    文章

    45

    浏览量

    9705
收藏 人收藏

    评论

    相关推荐

    16进制字符串的逻辑运算问题

    在一些网站上看到有些大虾编的程序,逻辑运算前竟然可以是16进制字符串,如图但是系统明明说逻辑运算只支持布尔和数值类型,这是怎么回事呢,求解!!!!!!还有其他方法可以实现16进制字符的逻辑运算吗?
    发表于 09-17 12:48

    逻辑运算符是什么

    逻辑运算符:与或非条件结构if -else及其嵌套循环结构whilefordo-while
    发表于 07-14 07:50

    逻辑电路与逻辑运算

    一、逻辑电路与逻辑运算逻辑运算符:(1)按变量整体值进行运算逻辑与(&&)逻辑或(||)
    发表于 07-16 10:51

    基本逻辑运算

    基本逻辑运算   在分析和设计数字电路时,需要使用的一个数学工具是逻辑代数。逻辑代数也称为布尔代数,由英国数学家G.Boole提出。逻辑代数是按一定
    发表于 04-06 23:56 2866次阅读
    基本<b class='flag-5'>逻辑运算</b>

    逻辑运算,什么是逻辑运算

    逻辑运算,什么是逻辑运算    计算机中除了进行加、减、乘、除等基本算术运算外,还可对两个或一个逻辑数进行逻辑运算。所谓
    发表于 04-13 10:48 3.1w次阅读

    逻辑运算与移位指令

    逻辑运算与移位指令:8086/8088CPU的指令系统提供8位和16位的逻辑运算与移位指令有3组。 逻辑运算指令 AND/OR/XOR/NOT/TEST 移位指令 SHL/SHR/SAL/SAR 循环移位指令 ROL/ROR/R
    发表于 07-03 23:52 0次下载

    单片机的逻辑电路与逻辑运算介绍

    在数字电路,我们经常会遇到逻辑电路,而在 C 语言中,我们则经常用到逻辑运算,二者在原理上是相互关联的。辑运算
    的头像 发表于 01-29 12:52 7429次阅读
    单片机的<b class='flag-5'>逻辑</b>电路与<b class='flag-5'>逻辑运算</b>的<b class='flag-5'>介绍</b>

    51单片机的算术和逻辑运算功能介绍

    A)算术和逻辑运算,可对半字节(一个字节是8位,半个字节就是4位)和单字节数据进行操作。 B)加、减、乘、除、加1、减1、比较等算术运算。 C)与、或、异或、求补、循环等逻辑运算。 D)位处理功能(即布尔处理器
    发表于 09-14 17:20 4332次阅读

    C语言中的逻辑运算符是怎么样的

    C语言提供了一组逻辑运算符:或(||)、且(&&)、非(!),分别对应于命题逻辑中的 OR、AND、NOT运算
    的头像 发表于 02-20 16:25 3719次阅读

    什么是逻辑运算

    逻辑运算符对其操作数求值,并返回一个值,该值指示求值结果是真还是假(true or false)。例如,运算a && b测试a和b是否都为真,如果两个操作数都为真,则运算符返回真。否则,运算
    的头像 发表于 02-09 15:55 1621次阅读
    什么是<b class='flag-5'>逻辑运算</b>符

    逻辑运算符与表达式

    逻辑运算符与位逻辑表达式可以实现位的编辑,比如位的清零、设置、取反和取补等操作。使用位逻辑运算符与位逻辑表达式可以在不使用汇编的情况下实现部分汇编的功能
    的头像 发表于 02-21 15:22 941次阅读
    位<b class='flag-5'>逻辑运算</b>符与表达式

    C语言逻辑运算符优先次序

    有3种逻辑运算符:与(AND),或(OR),非(NOT)。在basic和Pascal等语言可以在程序中直接用and,or,not作为逻辑运算符。在C语言中不能再程序中直接使用,而是用其他符号代替。
    的头像 发表于 03-09 10:49 2043次阅读

    KUKA机器人的逻辑运算

    逻辑运算符用于布尔变量、常数和简单的、借助比较运算符构成的逻辑表达式的逻辑运算
    发表于 07-21 10:06 1477次阅读
    KUKA机器人的<b class='flag-5'>逻辑运算</b>符

    verilog的逻辑运算

    写在前面 之前曾经整理过verilog的各类运算符的表达方式,但是在学习的过程中并未深入研究关于逻辑运算符的相关知识,导致在实际使用过程中错误频出,下面是我从网络上整理的相关verilog的逻辑运算
    的头像 发表于 09-21 10:07 941次阅读
    verilog的<b class='flag-5'>逻辑运算</b>符

    逻辑运算符两侧运算对象的数据类型是

    逻辑运算符是编程中常用的运算符之一,用于判断两个表达式之间的关系,并返回布尔值结果。在逻辑运算中,两侧运算对象的数据类型可以是任意类型。 首先,我们需要了解
    的头像 发表于 11-30 14:15 768次阅读