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

Ash*_*uja 5 c boolean-logic symbols mux

当我开始知道每个逻辑门已经定义时,我正在学习逻辑门C.例如,对于AND逻辑门,符号是&.因为OR,它是|.但我找不到MUX芯片的符号.

那么,如果有符号MUX,有人可以告诉我吗?如果没有,有人可以告诉我如何MUX在C中复制芯片吗?

Jas*_*sen 6

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

例如:

 x ? b : a 
Run Code Online (Sandbox Code Playgroud)

如果 x0a,如果它1(或其他任何东西)你b

此运算符适用于整个值,例如|| && ==!.它不会对位进行操作的^ ~ &|做的.

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

 ((int[]){a,b,c,d,})[x]
Run Code Online (Sandbox Code Playgroud)

但很多人对这种形式的构造不以为然.

如果你需要一个按位多路复用器,你需要从按位运算符构建它,例如:

 a ^ (( b ^ a ) & x)
Run Code Online (Sandbox Code Playgroud)


Aas*_*set 4

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

a << b
Run Code Online (Sandbox Code Playgroud)

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

多路复用/选择器可以通过右移运算符 来实现>>,该运算符将位向右移动。但是,结果必须&用 1 进行编辑,以便清除您感兴趣的位以外的任何其他位:

(c >> b) & 1
Run Code Online (Sandbox Code Playgroud)

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

  • @AshishAhuja:我的意思是这个问题没有意义,因为 MUX 是一个“数字电路”,而不是一个编程结构。但是,如果您将“int”值解释为总线,则可以制作具有类似效果的东西 - 但是当您的程序执行时,该操作很可能不会由实际的 MUX 执行(除非 MUX 是一部分)处理器的算术逻辑单元,但正如前面提到的,这是一个低得多的级别)。 (2认同)