代码之家  ›  专栏  ›  技术社区  ›  Box Box Box Box

C语言中“mux”芯片的符号是什么?

  •  5
  • Box Box Box Box  · 技术社区  · 10 年前

    我在研究逻辑门时,才知道每个逻辑门都已经在 C 。例如,对于 AND 逻辑门,符号为 & 对于 OR ,它是 | 。但我找不到 MUX 炸薯条

    所以,如果有一个符号 多路复用器 有人能告诉我吗?如果没有,有人能告诉我如何复制 多路复用器 C中的芯片?

    4 回复  |  直到 10 年前
        1
  •  6
  •   Jasen    10 年前

    最近的是条件运算符: ? :

    如:

     x ? b : a 
    

    如果 x 0 你得到了 a 如果是 1 (或其他任何东西) b

    该运算符处理整个值,如 || && == ! 做它不会像 ^ ~ & |

    多输入多路复用器没有直接等价物。 但您可以使用匿名数组来伪造一个,例如:

     ((int[]){a,b,c,d,})[x]
    

    但许多人不赞成这种形式的建筑。

    如果需要按位复用器,则需要从按位运算符构建它 如:

     a ^ (( b ^ a ) & x)
    
        2
  •  4
  •   Aasmund Eldhuset    10 年前

    请注意,C在比逻辑门更高的抽象级别上运行,因此进行这种比较可能会导致混淆。也就是说,你可能最接近 多路分解器 (我会从这个开始,因为它更简单)是 左移操作员 :

    a << b
    

    这个表达式,假设 a b int 表达式,将生成一个新的 整数 其位是 向左移动 b 时间。例如,如果 0100011011010110 b 为3,结果为 0011011010110000 。现在,如果 是0或1,并且您将得到的整数解释为总线,这对应于解复用器。

    A. 多路复用器 / 选择器 可以由 右移操作员 >> ,将位向右移位。然而,结果必须是 & '以1开头,以便清除除您感兴趣的位之外的任何其他位:

    (c >> b) & 1
    

    这有效地选择了索引处的位 b (从最低有效位开始) c .

        3
  •  1
  •   Adam    10 年前

    C有四个按位运算符:

    • 并且, & ,如在 a & b
    • 或者, | ,如在 a | b
    • 异或, ^ ,如在 a ^ b
    • 不是, ~ ,如在 ~a

    没有 MUX 操作人员

    小心你的措辞。这些被称为 按位 并且类似于应用于整型中的所有位的逻辑门。在C中 必然的 操作员不同。

        4
  •  1
  •   pat    10 年前

    这个 | , & ~ 运算符是按位运算符。它们并行处理操作数中的各个位。多路复用器没有相应的按位运算符。三元运算符:

    output = cond ? a : b
    

    接近,但选择器操作数被视为单个位,而不是位向量(即,所有输出位都来自 a 或所有输出位来自 b ,您不能让某些输出位来自 有些来自 b ). 要获得一个真正的按位多路复用器,其中选择器是一个向量,从中选择各个位 b ,您可以按照从离散逻辑门构建逻辑门的方式来实现它:

    output = (cond & a) | (~cond & b);
    

    这里,一个 1 在一个 cond 位允许从 传递,并从 b (因为 b 用反向条件掩蔽)。A. 0 在一个 条件 位从 ,并允许从 b 这两个掩码值是按位或的,因此输出的一位是 属于 b ,取决于中相应位的状态 c .