【问题标题】:What is the symbol of the `mux` chip in C?C中“mux”芯片的符号是什么?
【发布时间】:2016-04-22 11:41:35
【问题描述】:

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

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

【问题讨论】:

  • 您希望 MUX 运算符如何工作?你将如何提供它的输入?
  • @Dmitri,我会创建一个函数,在其中传递它的输入。

标签: c symbols boolean-logic mux


【解决方案1】:

C 有四个位运算符:

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

没有MUX 运算符。

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

【讨论】:

  • 那么有没有办法使用这些来制作MUX 芯片?
  • @AshishAhuja 多路复用器不是您通常在 C 级别编写的代码。相同的任务通常通过其他几种方式完成,例如条件(ifswitch?:),以及数组查找、位打包或其他方式。这完全取决于您想使用 MUX 做什么。请记住,C 不是硬件语言,而是高级语言。
  • 感谢您通知我,但如果您想这样做,有什么问题。我这样做是因为我正在学习电路和硬件。而且,我不想做焊接,因为我最后一次在电路上焊接时,我的一根手指被烧伤了。
  • 不烫手的焊接是一项重要的技能。这不是我完全掌握的技能,如果我第二天没有水泡,我就认为它是成功的。
【解决方案2】:

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

a << b

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

多路复用器/选择器可以由右移操作符&gt;&gt;实现,它将位右移。但是,结果必须是 &amp;'ed 和 1 才能清除除您感兴趣的位之外的任何其他位:

(c >> b) & 1

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

【讨论】:

  • 所以您的意思是,您不能在C 中创建MUX? (顺便说一句,到目前为止,我没有对任何人的答案投反对票或投赞成票。)。
  • 看起来我们都得到了一个,除了一个立即得到支持的答案。我会继续取消你得到的反对票。
  • 你知道什么是多路复用器吗?
  • @AshishAhuja:我的意思是这个问题没有意义,因为 MUX 是一个数字电路,而不是一个编程结构。但是,如果您将 int 值解释为总线,您可以制作具有类似效果的东西 - 但是当您的程序执行时,该操作很可能不会由实际的 MUX 执行(除非 MUX 是一部分您的处理器的算术逻辑单元,但如前所述,这是在低得多的级别上)。
  • @Adam:谢谢;你也一样。
【解决方案3】:

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

例如:

 x ? b : a 

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

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

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

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

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

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

 a ^ (( b ^ a ) & x)

【讨论】:

    【解决方案4】:

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

    output = cond ? a : b
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多