C中`mux`芯片的符号是什么?

What is the symbol of the `mux` chip in C?

我在研究逻辑门的时候才知道每个逻辑门都已经在C中定义了。例如,对于AND逻辑门,符号是&。对于 OR,它是 |。但是我找不到 MUX 芯片的符号。

所以,如果有 MUX 的符号,有人可以告诉我吗?如果没有,有人能告诉我如何用 C 语言复制 MUX 芯片吗?

C 有四个按位运算符:

  • AND,&,如 a & b
  • |,如 a | b
  • 异或,^,如 a ^ b
  • 不,~,如 ~a

没有 MUX 运算符。

注意你的措辞。这些被称为 bitwise 运算符,类似于应用于整数类型中所有位的逻辑门。在 C 逻辑 运算符是不同的。

请注意,C 在比逻辑门更高的抽象级别上运行,因此进行此类比较可能会导致混淆。也就是说,最接近 解复用器 (我将从它开始,因为它更简单)是 左移运算符 :

a << b

这个表达式,假设 abint 表达式,将产生一个新的 int,其位是 a 移位的位向左 b 次。例如,如果 a0100011011010110 并且 b 是 3,则结果将是 0011011010110000。现在,如果 a 为 0 或 1,并且您将结果整数解释为总线,则这对应于多路分解器。

一个多路复用器/选择器可以通过右移运算符实现>>,它向右移动位。但是,结果必须 & 加 1 以清除除您感兴趣的位之外的任何其他位:

(c >> b) & 1

这有效地从 c.

中选择索引 b 处的位(从最低有效位开始)

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

例如:

 x ? b : a 

如果 x0 你会得到 a 如果它是 1(或其他任何东西)你会得到 b

此运算符适用于整个值,如 || && ==! 一样。它不像 ^ ~ &| 那样对位进行操作。

multi-input 多路复用器没有直接等效项。 但是你可以使用匿名数组伪造一个,例如:

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

但是很多人不赞成这种形式的结构。

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

 a ^ (( b ^ a ) & x)

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

output = cond ? a : b

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

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

这里,cond位中的1允许来自a的相应位通过,并阻止来自b的相应位(因为b 被相反的条件屏蔽了)。 cond 位中的 0 阻止 a 中的相应位,并允许 b 中的相应位通过。两个掩码值按位或运算在一起,因此根据 c 中相应位的状态,输出的一位是来自 ab 的相应位。