精华内容
下载资源
问答
  • 卡诺图化简软件

    2020-04-30 10:30:39
    卡诺图化简软件该软件是免费版,无需注册,安装后即可使用...方式输入各种逻辑条件,并指定各种组合的结果, 卡诺图化简软件该软件是免费版,无需注册,安装后即可使用。方式输入各种逻辑条件,并指定各种组合的结果,
  • 卡诺图化简软件.rar

    2021-07-29 17:36:36
    卡诺图化简软件 最高支持8输入
  • 4输入卡诺图化简

    2015-03-25 21:46:54
    4输入的卡诺图化简软件 图形化挺好的 数字逻辑专用
  • 用C语言来“教会”你电脑化简卡诺图!...化简的算法其实就是 把卡诺图所有的圈法写成函数, 再根据不同的情况对圈法进行优先级排序,哪种圈法优先我就先调用哪个函数 ...能够解决大多数的四变量以内的卡诺图化简
  • 2010耳4月 电 脑 学 习 第2期多变量卡诺图化简的算法实现汪 靖’ 林 植摘 要:提出了一种对包含任意多个变量的卡诺圈进行化简的算法。给出了算法整体设计流程图以及关键函数伪代码。借助计 算机实现多变 量卡诺 图的...

    2010耳4月 电 脑 学 习 第2期

    多变量卡诺图化简的算法实现

    汪 靖’ 林 植

    摘 要:提出了一种对包含任意多个变量的卡诺圈进行化简的算法。给出了算法整体设计流程图以及关键函数伪代码。借助

    计 算机实现多变 量卡诺 图的化简 .为后续工程 系统的设计 分析提供 了可 靠依据 。

    关键词:布尔代数式 多变量 卡诺图 算法

    中图分类号:Tlr302 文献标识码: B 文章编号:1002—2422(2010)02—0075-03

    Algorithm Implementation ofSimplification ofMulti-variableKarnaugh Map

    WangJing Lin Zhi

    Abstract: Thepaperpresentsanalgorithm torealizethesimplificationofmulti-vm-lableKamau曲 Map,andgivestheoverall

    designflow chart.aswellasthepseudoeod eofthecrucial function.With theaidofthecomputer,themethodcall

    providereliabledataforthefollowinganalysisofengineeringdesing .

    Keyword: cArithmeticExpression Multi-variable XarnauShMap Algorithm

    1算法介绍 了一个逻辑变量。

    布尔代数式化简的原则是逻辑 电路所用的门电路最 1.2算法分析

    少,各个 门电路的输入端最少,表现在布尔代数式化简中就 根据卡诺图的标注方式和化简表达式的基本原理,算

    是使用尽可能少的布尔变量表示布尔代数式。使用卡诺图 法分四个步骤实现。

    化简得到的最简布尔代数式可以用与或式、或与式和无反 (1)求出各项的相邻项。从a0开始,依次求出ai在A

    变量形式表示fl】。仅以与或式为例进行算法描述,其他两种 中出现的各相邻项。

    形式可以在此基础上稍加修改。 (2)合并相邻项。首先将a依次与其各相邻项aj合并

    1.1化简原理 新的逻辑项bl,此处相异位可以是0与 1相异、0或 1与+

    假设需化简的逻辑表达式A中含有m个逻辑项ai(i 相异 。

    为整数,0≤i≤m),其中a由若干个布尔变量组成,记为 其次,将ai和a作为b的源项。如果a或aj本身 已由

    XoXI~-*X。。例如:逻辑表达式 其他逻辑项合并而来,则将 a;或aj的源项替代a或aj。

    A 1_2 12x3+x0xlx2x3+x0xlx2x3+x0 123+xO 最后,为了与未合并项区别,将 已参与合并的逻辑项a

    、aj及各 自源项的合并次数分别增加 1。具体实现时,应考虑

    xlx2x3+x0xlx2x3,其中ao-一xO—xl—x2一x3,记为0000;al=0x一I—x

    三种不同的情况:

    2x3,记为0001,a2=…xOxlx2x3,记为 0010;a3=x0xlx2x3,记为

    ① 当a和a;中均不含有 “ ” 时,b中该位直接用

    O110;a x0…xlx2x3,记为 1000:as=x0一x1x一2x3,记为 1001; “}”标识,其源项为ai和ai。

    a~=x0x一lx2x一3,

    展开全文
  • 一、最小项与卡诺图 1.最小项的定义 特点:每项都有n个变量, 每个乘积它中每个变量出现且仅出项1次 最小项具有下列性质: (1)对于任意一个最小项,只有一组变量取值使得它的值为1,而在变量取其他各组值时,这个...
  • 一文彻底理解卡诺图化简算法

    千次阅读 2018-11-19 01:25:41
    一文彻底理解卡诺图化简算法写在前面背景算法第一步第二步 本文基于Abdelrahman Elzedy的文章《A C++ Karnaugh Map Minimizer (Infinite Variables)》,在一些比较难懂的地方我加了一些自己的解释,原文链接:...

    一文彻底理解卡诺图化简算法


    本文基于Abdelrahman Elzedy的文章《A C++ Karnaugh Map Minimizer (Infinite Variables)》,在一些比较难懂的地方我加了一些自己的解释,原文链接: https://www.codeproject.com/Articles/649849/A-Cplusplus-Karnaugh-Map-Minimizer-Infinte-Variabl
    大家可以在网站上可以下载exe文件和源代码

    写在前面

    这篇文章主要介绍了一种可以化简包含任意多个变量的卡诺图的算法。但是原文链接所提供的代码只实现了26个变量的卡诺图化简(与英文字母的个数相同)。

    背景

    本文假设读者具有基本的布尔代数和卡诺图知识。(译者注:大家如果忘了卡诺图是啥可以参考百度百科

    程序运行的时候长这样:
    无
    程序的使用步骤如下:

    1. 输入卡诺图的类型(也就是变量的个数)
    2. 输入卡诺图中1的位置(在最后以-1结尾表示结束输入)
    3. 输入卡诺图中不关心的位置(在最后以-1结尾表示结束输入)
    4. 选择结果的类型(POS (Product of Sum)或SOP(Sum of Product))
    5. 得到卡诺图的化简结果

    算法

    算法主要有三步,在代码中,每一步都由一个类(class)实现。

    1. 按照用户的输入(值为1和不关心的位置)初始化卡诺图,并且将值为1和不关心的位置信息保存为二进制值
      (译者注:将位置值保存为二进制主要是为了方便后面的化简,因为使用二进制判断位置是否相邻比较方便,大家往后看就明白了~)
    2. 比较所有值为1和不关心的位置,得到所有可能的最小项
    3. 检查上一步得到的结果,去掉所有多余的最小项,得到最终的结果 (译者注:如果结果不唯一时程序会输出所有可能的结果)

    一脸懵逼ing?当时我读这篇文章时到这里也是不知所云,只感觉不明觉厉。不过别担心,继续往下读,我会用栗子和图的方式让大家搞懂的(译者注)

    第一步

    在这一步中,我们首先得到了用户输入的卡诺图的信息(变元个数,值为1与不关心的位置)。然后我们就将这些信息转化为二进制的形式。
    举个栗子:
    首先我们要知道卡诺图是怎么编号的,一个典型的四元卡诺图的编号方式如下:
    无

    从图中很容易看出卡诺图的编号方式:横纵坐标都是按照格雷码的方式编号(不知道格雷码的编号方式请点击这里);处于横坐标的变量(图中的A、B)的值作为高位,处于纵坐标的变量(图中的C、D)的值作为低位,构成二进制数,这个二进制数所对应的十进制数就是该位置的编号。
    如果我们需要输入一个如下图所示的卡诺图(其中空的位置都是0,X表示不关心的值):
    无
    那我们首先应该输入4(卡诺图变量的个数),然后在下一行输入0 1 3 4 11 -1(其中-1表示这一行输入结束,0 1 3 4 11是值为1的位置编号),然后再另起一行,输入5 -1(5是X的位置编号,-1代表输入结束)。这样,用户的输入就完成了。
    然后程序将用户输入的位置转化为二进制(因为有四个变量,所以转化为四位二进制)。值为1的位置二进制编号分别为0000,0001,0011,0100和1011;X的位置二进制编号为0101。
    可能大家已经看出来了,卡诺图这样编号的好处就是将位置和二进制的编号联系在了一起。比如我们很容易推断,二进制编号为0000和0001的两个位置是相邻的。这样就为我们接下来卡诺图化简奠定了基础。

    第二步

    在这一步中,我们需要两两比较上一步保存的值为1和X的位置二进制编号。比较的步骤如下(设变元总个数为n):

    1. 如果有两个二进制数在n-1位上都相同,只有一位不同,则将不同的那一位设为 -1 ,相同位置数字不变,生成一个新的二进制数。
      例如上面栗子中的0000和0001,只有第四位不同,则生成新数000(-1)
    2. 将上面步骤中配过对的数字标记,在下一轮的比较中只加入新生成的数和未标记的数(即没有配对的数)。
    3. 重复以上步骤n次。(考虑最坏的情况:如果我们处理的是一个全部位置都是1的卡诺图,那我们必须重复n次)如果有一个数重复多次,则只保留一个。

    接着第一步的栗子。在第一步中,我们已经得到了值为1的位置和值为X的位置的二进制编号:0000,0001,0011,0100、1011、0101。我们按照上面叙述的步骤走一遍:

    Step1: 将每两个编号都进行比较,生成新数

    如下图所示,红笔表示新数生成的过程,红色的√标记此数已经与其他的数配过对。
    在这里插入图片描述

    Step2 将生成的新数加进序列,并剔除做过标记的数,得到第一次处理后的数列为:
    000(-1), 0(-1)00, 00(-1)1, 0(-1)01, (-1)011 and 010(-1)

    Step3: 重复以上步骤,得到的第二次处理后的数列为:
    0(-1)0(-1), 0(-1)0(-1), 00(-1)1 and (-1)011
    第三次处理后的数列为:
    0(-1)0(-1), 0(-1)0(-1), 00(-1)1 and (-1)011
    第四次处理后的数列为:
    0(-1)0(-1), 0(-1)0(-1), 00(-1)1 and (-1)011
    去掉重复的0(-1)0(-1)得到:
    0(-1)0(-1), 00(-1)1 and (-1)011

    其实这个过程模拟的就是我们化简卡诺图时画圈的过程。
    处理完n次后,我们就可以将我们得到的二进制数列转化为字母表示,转化规则如下:

    1. 二进制中的第一位、第二位…第n位分别对应卡诺图中的第一个、第二个…第n个字母。
    2. 0表示对应的字母取非,1表示对应的字母不取非。
    3. 如果某位上的数字为(-1),则表示对应的字母应该忽略。

    例如将上面的数列 0(-1)0(-1), 00(-1)1 and (-1)011 转化为字母形式应该为:
    A’C’, A’B’D and B’CD(符号 ’ 表示取非,你懂的)
    有两种特殊的情况需要考虑:

    1. 如果在某一步中数列出现每位都是 -1 的数,则说明对应卡诺图化简的结果为1;
    2. 如果初始的数列为空,则表示这是一个所有元素都为0的卡诺图,化简的结果为0。

    第三步

    在这一步中,我们将上一步得到的所有最小项进行组合,如果组合能够覆盖卡诺图中所有值为1的位置,则保留这个组合,得到所有可能的结果。最后输出所有最小项最少的组合。
    例如在文章开始在这个图中:

    我们第二步结束后得到的结果应该是 B’D’, B’C, BD, AB’, AD and CD。当我们将这些项做排列组合时,B’D’+B’C+BD+AB’ 和B’D’+B’C+BD+AD+AB’都可以覆盖卡诺图中所有值为1的位置。但是因为前一个组合的最小项数为4,后一个为5,所以输出B’D’+B’C+BD+AB’ 而不输出B’D’+B’C+BD+AD+AB’。

    以上就是卡诺图化简算法的全部内容。如果大家有什么不懂的地方,或者觉得算法有可以改进的地方,欢迎在评论区讨论~

    展开全文
  • 数电之卡诺图化简

    千次阅读 2020-07-30 15:16:54
    1.最小项 在n变量逻辑函数中,若m为包含n...逻辑函数的化简 a.公式法(略) b.卡诺图法 例子: 例子: (可以先化成最小项之和的形式:Y=ABC(D+D')+AB(C+C')D+A(B+B')C'D+(A+A')(B+B')C'D'+AB'C(D+D')+A'(B+B')CD' )

    1.最小项

    在n变量逻辑函数中,若m为包含n个因子的乘积项,而且这n个变量均以原变量和反变量的形式在m中出现一次,则称m为改组变量的最小项

     

     

    2.逻辑函数的最小项之和形式

    首先将给定的逻辑函数式化为若干乘积项之和的形式(亦称“积之和”形式),然后再利用公式A+A'=1将每个乘积项中缺少的因子补全,这样就可以将与或的形式化为最小项之和的形式

    例如:

    3.逻辑函数形式的变换

    与或转换为与非形式

    Y=AC+BC'

    化为:Y=((AC+BC')')'=((AC)'(BC')')'

    (德摩根定理:(AB)'=A'+B'    (A+B)'=A'B'     )

    4.逻辑函数的化简

    a.公式法(略)

    b.卡诺图法

    例子:

     

    例子:

    (可以先化成最小项之和的形式:Y=ABC(D+D')+AB(C+C')D+A(B+B')C'D+(A+A')(B+B')C'D'+AB'C(D+D')+A'(B+B')CD'  )

     

    展开全文
  • 卡诺图化简性质 性质1: 深蓝色文字诺图中两个逻辑相邻的1方格的最小项可以合并成一个与项, 消去一个变量。 要注意的是: 逻辑相邻不仅仅是几何位置上的相邻,最左边的列与最右边的列、最上面的行和最下面的行...

    一 卡诺图化简性质

    性质1: 深蓝色文字诺图中两个逻辑相邻的1方格的最小项可以合并成一个与项, 消去一个变量。

    要注意的是: 逻辑相邻不仅仅是几何位置上的相邻,最左边的列与最右边的列、最上面的行和最下面的行都是逻辑相邻的。

    性质2:卡诺图中四个逻辑相邻1方格的最小项可以合并成一个与项,并消去两个变量。

    性质3:卡诺图中八个逻辑相邻的1方格可以合并成一个与项,并消去三个变量。

     

    二 卡诺图化简步骤及举例

    步骤包括:

    (1)画出函数的卡诺图;

    (2)仔细观察卡诺图,找出    个逻辑相邻的1方格,并给它们画上圈,画圈的原则要使圈尽可能大;

    (3)按照卡诺图化简性质,写出最简与或表达式。

    以下看几个例子

    例1  用卡诺图化简函数F(A,B,C,D) = 

    解: (1)画出函数F的卡诺图。

    把逻辑函数写成最小项形式如下:

    原式等于  F(A, B, C, D)  = m3+m9+m11+m13

                                             =

    画出该函数的卡诺图如下图(a) 所示

                 

                                   (a)                                                            (b)

    (2)给逻辑相邻的1方格画圈

    按照逻辑相邻原则画圈, 如上图(b)所示。

    (3)按照卡诺图化简性质,写出两个圈的最简与或表达式,并把它们相或起来, 就得到该逻辑函数的最简与或表达式。

      

    例2: 用卡诺图化简下列函数,并写出最简与或表达式: 

    解: 分几步来解析

    (1)画出函数F的卡诺图

       

    (2) 给逻辑相邻的1方格画圈,按照逻辑相邻原则画圈。

    (3)按照卡诺图化简性质,画出两个圈的与或表达式,并把它们相或起来,就得到最简与或表达式

    本例的画圈,我还是存有疑问的,横圈是否可以只圈最后两格, 不是圈住4格?

     

    在做卡诺图化简要注意事项: 在卡诺图上画圈有几个问题

    (1)将卡诺图中的1方格画圈, 一个也不能漏掉,1方格允许被多次圈用。

    2)圈的个数应尽可能少,因为一个圈和一个与项相对应,圈数越少, 与或表达式的与项就越少
    (3)圈内的1方格数必须为 个,圈的范围越大越好,因为圈越大,可消去的变量就越多,与项中的变量就越少。

    (4)每个圈应至少包含一个新的1方格, 否则这个圈就是多余的。

    (5)在同一个卡诺图中画圈的方式可能不是惟一的,因此用卡诺图化简所得到的最简与或表达式也不是惟一的。

    这里特别提醒注意 第4点, 看一个图加强理解

    用卡诺图化简函数F(A,B, C, D)=, 画图为

    这里绝不能给中间4个1方格 画圈, 因为没有新的1方格,都已被圈过!

     

     

     

     

    展开全文
  • 卡诺图化简逻辑函数

    2020-02-26 15:29:08
    依据 基本原理 化简步骤 上面(1)的3打错了要去掉 例题 逻辑函数的化简结果不是唯一的
  • 卡诺图化简学习笔记

    2021-12-11 23:04:37
    卡诺图 1. 什么是卡诺图 卡诺图是一个方格图,将逻辑变量分为两组,每一组变量取值组合按循环码的规则排列,图中的每一个方格对应着逻辑变量的一个最小项。又称K图 循环码:指相邻两组编码之间只有一个变量值不同的...
  • 卡诺图化简软件.zip

    2021-12-24 13:16:33
    卡诺图化简软件
  • 介绍了关于逻辑函数化简--卡诺图化简的详细说明,提供计算机的技术资料的下载。
  • 卡诺图,在一张图上圈圈画画,就能搞定逻辑函数的化简问题。 4.1 卡诺图 4.1 卡诺图
  • 什么是卡诺图 从几何位置上看可以看做循环相邻的图形
  • 卡诺图的时候需要先将所有变量可能以格雷码的形式排列在方格两侧,所有变量有2^n个,虽然我们常用的变量为四个及以下,可以熟记格雷码,但为了学习还是有必要了解格雷码的编码规则。格雷码的基本特点就是任意两个...
  • hdlbits 卡诺图部分
  • 提出了卡诺图化简中获得卡诺圈合并结果的数学方法。根据卡诺图制图原理,这种数学计算方法的要点在于:用2个最小项对应的十进制数之差找到消去变量;从卡诺圈的某个最小项中去掉相应消去变量得到合并结果。该方法在卡诺...
  • 基于Java的卡诺图化简

    千次阅读 2017-12-04 13:07:51
    得出不依赖于卡诺图图像的化简方式 根据卡诺图得出表达式,对表达式进行队列优先遍历两两进行化简1.先给出核心匹配段,对ArrayList数组中的内容判断是否可化简//传入两个字符串对其进行是否仅有一个变量不同的字符...
  • 卡诺图化简下面的函数为最简“与-或”式 一、题目描述 (1) (2) 二、题目解答 (1) (2)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,048
精华内容 419
关键字:

卡诺图化简