Ash*_*uja 5 c boolean-logic symbols mux
当我开始知道每个逻辑门已经定义时,我正在学习逻辑门C.例如,对于AND逻辑门,符号是&.因为OR,它是|.但我找不到MUX芯片的符号.
那么,如果有符号MUX,有人可以告诉我吗?如果没有,有人可以告诉我如何MUX在C中复制芯片吗?
最接近的是条件运算符: ? :
例如:
x ? b : a
Run Code Online (Sandbox Code Playgroud)
如果 x是0你a,如果它1(或其他任何东西)你b
此运算符适用于整个值,例如|| && ==和!.它不会对位进行操作的^ ~ &和|做的.
多输入多路复用器没有直接的等价物.但你可以使用匿名数组伪造一个,例如:
((int[]){a,b,c,d,})[x]
Run Code Online (Sandbox Code Playgroud)
但很多人对这种形式的构造不以为然.
如果你需要一个按位多路复用器,你需要从按位运算符构建它,例如:
a ^ (( b ^ a ) & x)
Run Code Online (Sandbox Code Playgroud)
请注意,C 的抽象级别比逻辑门高得多,因此进行此类比较可能会导致混乱。也就是说,您可能最接近的解复用器(我将从它开始,因为它更简单)是左移运算符:
a << b
Run Code Online (Sandbox Code Playgroud)
该表达式假设a和b是int表达式,将产生一个新的int,其位是a左移次数的位b。例如,如果ais0100011011010110且bis 3,则结果将为0011011010110000。现在,如果a是 0 或 1 并且您将结果整数解释为总线,则这对应于多路分配器。
多路复用器/选择器可以通过右移运算符 来实现>>,该运算符将位向右移动。但是,结果必须&用 1 进行编辑,以便清除您感兴趣的位以外的任何其他位:
(c >> b) & 1
Run Code Online (Sandbox Code Playgroud)
这有效地从 中选择索引处的位b(从最低有效位开始)c。