📜  实现逻辑门的程序

📅  最后修改于: 2021-09-16 10:33:15             🧑  作者: Mango

逻辑门是任何数字电路的基本构建块。它需要一两个输入并根据这些输入产生输出。输出可能是高 (1) 或低 (0)。逻辑门使用二极管或晶体管实现。它也可以使用真空管、光学元件、分子等电磁元件构建。在计算机中,大多数电子电路由逻辑门组成。逻辑门用于创建执行计算、数据存储或展示面向对象编程尤其是继承能力的电路。

定义了七个基本逻辑门,它们是:

  1. 与门,
  2. 或门,
  3. 不是门,
  4. 与非门,
  5. 或非门,
  6. 异或门和
  7. 异或门。

以下是关于它们的简要细节及其实现:

  1. 与门
    如果两个输入都是 1,AND 门给出的输出为 1,否则给出 0。

    以下是使用各种方法实现与门的程序:

    1. 使用产品方法。
    2. 使用 if else 条件。
    3. 使用“和(&)”运算符。
    Product Method
    // C program implementing the AND gate
    // through product method.
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, product;
      
        for (i = 0; i < 5; i++) {
      
            // using product method
            product = a[i] * b[i];
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], product);
        }
    }


    & Operator
    // C program implementing the AND gate
    // using & operator
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, and_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the & operator
            and_ans = a[i] & b[i];
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], and_ans);
        }
    }


    If-Else
    // C program implementing the AND gate
    // using if and else condition
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            if (a[i] == 0 && b[i] == 0)
                ans = 0;
      
            else if (a[i] == 0 && b[i] == 1)
                ans = 0;
      
            else if (a[i] == 1 && b[i] == 0)
                ans = 0;
            else
                ans = 1;
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], ans);
        }
    }


    + Operator
    // C program implementing the OR gate
    // using + operator
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, or_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the + operator
            if (a[i] + b[i] > 0)
                or_ans = 1;
            else
                or_ans = 0;
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], or_ans);
        }
    }


    | Operator
    // C program implementing the OR gate
    // using | operator
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, or_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the | operator
            or_ans = a[i] | b[i];
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], or_ans);
        }
    }


    || Operator
    // C program implementing the OR gate
    // using || operator
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, or_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the || operator
            or_ans = a[i] || b[i];
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], or_ans);
        }
    }


    If-Else
    // C program implementing the OR gate
    // using if else
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, or_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the if-else conditions
            if (a[i] == 0 && b[i] == 0)
                or_ans = 0;
            else
                or_ans = 1;
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], or_ans);
        }
    }


    If-Else
    // C program implementing the NAND gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            if (a[i] == 1 && b[i] == 1)
                ans = 0;
            else
                ans = 1;
            printf("\n %d NAND %d = %d",
                   a[i], b[i], ans);
        }
    }


    Complement of the product
    // C program implementing the NAND gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            ans = !(a[i] * b[i]);
            printf("\n %d NAND %d = %d",
                   a[i], b[i], ans);
        }
    }


    + Operator
    // C program implementing the NOR gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            ans = !(a[i] + b[i]);
            printf("\n %d NOR %d = %d",
                   a[i], b[i], ans);
        }
    }


    If-Else
    // C program implementing the NOR gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            if (a[i] == 0 && b[i] == 0)
                ans = 1;
            else
                ans = 0;
            printf("\n %d NOR %d = %d",
                   a[i], b[i], ans);
        }
    }


    If-Else
    // C program implementing the NOT gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            if (a[i] == 0)
                ans = 1;
            else
                ans = 0;
            printf("\n  NOT %d = %d", a[i], ans);
        }
    }


    ! Operator
    // C program implementing the NOT gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            ans = !(a[i]);
            printf("\n  NOT %d = %d", a[i], ans);
        }
    }


    输出:
    1 AND 0 = 0
     0 AND 1 = 0
     1 AND 1 = 1
     0 AND 0 = 0
     1 AND 0 = 0
    
  2. 或门
    如果两个输入中的任何一个为 1,OR 门给出的输出为 1,否则给出 0。

    以下是使用各种方法实现与门的程序:

    1. 使用 +运算符。
    2. 使用 |运算符。
    3. 使用 ||运算符。
    4. 使用 if else。

    + 操作员

    // C program implementing the OR gate
    // using + operator
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, or_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the + operator
            if (a[i] + b[i] > 0)
                or_ans = 1;
            else
                or_ans = 0;
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], or_ans);
        }
    }
    

    |操作员

    // C program implementing the OR gate
    // using | operator
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, or_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the | operator
            or_ans = a[i] | b[i];
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], or_ans);
        }
    }
    

    ||操作员

    // C program implementing the OR gate
    // using || operator
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, or_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the || operator
            or_ans = a[i] || b[i];
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], or_ans);
        }
    }
    

    如果别的

    // C program implementing the OR gate
    // using if else
      
    #include 
    #include 
      
    int main()
    {
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, or_ans;
      
        for (i = 0; i < 5; i++) {
      
            // using the if-else conditions
            if (a[i] == 0 && b[i] == 0)
                or_ans = 0;
            else
                or_ans = 1;
      
            printf("\n %d AND %d = %d",
                   a[i], b[i], or_ans);
        }
    }
    
    输出:
    1 AND 0 = 1
     0 AND 1 = 1
     1 AND 1 = 1
     0 AND 0 = 0
     1 AND 0 = 1
    
  3. 与非门
    如果两个输入都是 1,则与非门(与非门)输出 0,否则输出 1。

    以下是使用各种方法实现与非门的程序:

    1. 使用 if else。
    2. 使用产品的补充。

    如果别的

    // C program implementing the NAND gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            if (a[i] == 1 && b[i] == 1)
                ans = 0;
            else
                ans = 1;
            printf("\n %d NAND %d = %d",
                   a[i], b[i], ans);
        }
    }
    

    产品的补充

    // C program implementing the NAND gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            ans = !(a[i] * b[i]);
            printf("\n %d NAND %d = %d",
                   a[i], b[i], ans);
        }
    }
    
    输出:
    1 NAND 0 = 1
     0 NAND 1 = 1
     1 NAND 1 = 0
     0 NAND 0 = 1
     1 NAND 0 = 1
    
  4. 或非门
    如果两个输入都是 0,则 NOR 门(否定的 OR)输出 1,否则输出 1。

    以下是使用各种方法实现或非门的程序:

    1. 使用 + 运算符。
    2. 使用 if else。

    + 操作员

    // C program implementing the NOR gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            ans = !(a[i] + b[i]);
            printf("\n %d NOR %d = %d",
                   a[i], b[i], ans);
        }
    }
    

    如果别的

    // C program implementing the NOR gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int b[5] = { 0, 1, 1, 0, 0 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            if (a[i] == 0 && b[i] == 0)
                ans = 1;
            else
                ans = 0;
            printf("\n %d NOR %d = %d",
                   a[i], b[i], ans);
        }
    }
    
    输出:
    1 NOR 0 = 0
     0 NOR 1 = 0
     1 NOR 1 = 0
     0 NOR 0 = 1
     1 NOR 0 = 0
    
  5. 非门

    它充当逆变器。它只需要一个输入。如果输入为 1,它会将结果反转为 0,反之亦然。

    以下是使用各种方法实现非门的程序:

    1. 使用 !操作员。
    2. 使用 if else。

    如果别的

    // C program implementing the NOT gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            if (a[i] == 0)
                ans = 1;
            else
                ans = 0;
            printf("\n  NOT %d = %d", a[i], ans);
        }
    }
    

    !操作员

    // C program implementing the NOT gate
      
    #include 
    #include 
      
    int main()
    {
      
        int a[5] = { 1, 0, 1, 0, 1 };
        int i, ans;
      
        for (i = 0; i < 5; i++) {
            ans = !(a[i]);
            printf("\n  NOT %d = %d", a[i], ans);
        }
    }
    
    输出:
    NOT 1 = 0
      NOT 0 = 1
      NOT 1 = 0
      NOT 0 = 1
      NOT 1 = 0