在C语言中,mux芯片的符号是什么?

在C语言中,mux芯片的符号是什么?,c,symbols,boolean-logic,mux,C,Symbols,Boolean Logic,Mux,当我开始研究逻辑门时,我知道每个逻辑门都已经在C中定义了。例如,对于和逻辑门,符号为&。对于或,它是|。但是我找不到MUX芯片的符号 那么,如果有一个符号表示MUX,有人能告诉我吗?如果没有,有人能告诉我如何在C中复制一个MUX芯片吗?C有四个位运算符: 以及,&,如a&b 或者,|,如a | b 异或,^,如a^b 不是,~,如~a 没有MUX运算符 注意你的措辞。这些被称为按位运算符,类似于应用于整数类型中所有位的逻辑门。在C语言中,逻辑运算符是不同的。请注意,C语言的抽象级别远远高于逻

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


那么,如果有一个符号表示
MUX
,有人能告诉我吗?如果没有,有人能告诉我如何在C中复制一个
MUX
芯片吗?

C有四个位运算符:

  • 以及,
    &
    ,如
    a&b
  • 或者,
    |
    ,如
    a | b
  • 异或,
    ^
    ,如
    a^b
  • 不是,
    ~
    ,如
    ~a
没有
MUX
运算符


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

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

output = cond ? a : b

这将有效地从
c

中选择索引
b
(从最低有效位开始)处最接近的位是条件运算符:

例如:

如果
x
0
则得到
a
如果
1
(或任何其他)则得到
b

此运算符处理整个值,如
|
&
==
执行。它不像
^
~
&
|
那样对位进行操作

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

 ((int[]){a,b,c,d,})[x]
但许多人不赞成这种形式的建筑

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


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

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

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

这里,a
cond
位中的
1
允许
a
中的对应位通过,并阻止
b
中的对应位(因为
b
被反向条件屏蔽)。A
cond
位中的
0
阻止
A
中的相应位,并允许
b
中的相应位通过。这两个被屏蔽的值是按位或加在一起的,因此输出位是
a
b
的对应位,具体取决于
c
中对应位的状态

那么,有没有一种方法可以用这些芯片制作出一个
MUX
芯片呢?@AshishAhuja一个MUX通常不是在C级编写的。同一任务通常以其他几种方式完成,例如条件(
if
开关
?:
)和数组查找、位打包或其他方式。这完全取决于你想用你的多路复用器做什么。请记住,C不是一种硬件语言,它是一种高级语言。谢谢你告诉我这一点,但如果你想这么做,有什么不对吗。我这样做是因为我在学习电路和硬件。而且,我不想焊接,就像上次我在电路上焊接一样,我烧伤了一根手指。不烧伤手指的焊接是一项重要技能。这不是我完全掌握的技能,如果我第二天没有水泡,我认为这是成功的。你到底希望一个多路复用器操作员如何工作?你将如何提供它的输入?@Dmitri,我将创建一个函数,在其中传递它的输入。你的意思是说,你不能在
C
中创建
MUX
?(顺便说一句,到目前为止,我没有对任何人的答案投反对票或赞成票。)看起来我们都得到了一个答案,只有一个答案立即得到了赞成票。我会继续取消你的否决票。你知道什么是多路复用器吗?@AshishAhuja:我的意思是,这个问题没有意义,因为多路复用器是数字电路,而不是编程结构。但是,如果将
int
值解释为总线,则可以做出具有类似效果的操作-但当执行程序时,该操作很可能不会由实际的MUX执行(除非MUX是处理器算术逻辑单元的一部分,但如前所述,这是在一个低得多的级别上)亚当:谢谢你;和你一样。
 a ^ (( b ^ a ) & x)
output = cond ? a : b
output = (cond & a) | (~cond & b);