Należy pamiętać, że C działa na znacznie wyższym poziomie abstrakcji niż logiczne bramki, więc dokonywanie takich porównań może prowadzić do nieporozumień. Powiedział, że najbliżej można dojść do demultiplekser (Zacznę że ponieważ jest to prostsze) jest lewo operatora przesunięcia:
a << b
Wyrażenie to, zakładając, że a
i b
są int
wyrażenia , wyprodukuje nowy int
, którego bity są bitami a
przesuniętymi w lewo o kilka razy w lewo b
. Na przykład, jeśli a
jest 0100011011010110
i b
wynosi 3, wynikiem będzie 0011011010110000
. Teraz, jeśli a
ma wartość 0 lub 1 i interpretujesz wynikową liczbę całkowitą jako magistralę, odpowiada to demultiplekserowi.
multiplekser/selektor mogą być realizowane przez operatora przesunięcie w prawo>>
bitów, który przesuwa się w prawo. Jednak wynik musi być &
„ed z 1 w celu usunięcia jakichkolwiek innych bitów niż ta, którą zainteresowały:
(c >> b) & 1
To skutecznie wybiera kawałek w indeksie b
(począwszy od najmniej znaczącego bitu) z c
.
Jak dokładnie można oczekiwać pracy operatora MUX? Jak dostarczysz swoje dane wejściowe? – Dmitri
@Dmitri, zrobiłbym funkcję, w której będę przekazywał jej dane wejściowe. –