Monadisch Reduktion

Benutzeravatar
Diablo
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 210
Registriert: 6. Sep 2008 17:43
Wohnort: Kreis Offenbach

Monadisch Reduktion

Beitrag von Diablo »

Nur noch mal zur Sicherheit dass ich das richtig verstanden habe =) (Ein Ja langt schon ;-b)

Wenn ich z.B. q = 1001 habe und dann &q mache passiert folgendes
1 & 0 = 0 & 0 = 1 & 1 = 1 es wird also angefangen beim MSB das nebenstehende bit verglichen und dessen Ergebnis dann mit dem nächsten bit usw.

In Aufgabe 3.5 (Parität hinzufügen) hat man das ja mit xor benötigt =) und da hat es genau so funktioniert.
Danke also für ein kurzes feedback ob das ganze so richtig interpretiert ist.

Benutzeravatar
Iblis
Windoof-User
Windoof-User
Beiträge: 37
Registriert: 19. Mär 2009 00:37
Kontaktdaten:

Re: Monadisch Reduktion

Beitrag von Iblis »

Ich glaube das ist so nicht richtig.

Dein Ergebnis kann bei bitweisen logikoperatoren nicht weniger bits besitzen als deine operanden. Meiner Meinung nach würde das für dein Beispiel so aussehen:

1 0 0 1
- AND -
1 0 0 1
______
1 0 0 1

Man wendet also die gewünschte operation bit für bit auf die jeweils entsprechenden bits der operanden an (sprich gleiche wertigkeit) und erhält dann das ergebnis mit gleicher bitlänge.

Ich glaube du verwechselst das gerade mit den bool'schen funktionen, die gehen nur von 1 oder 0 aus, hier aber kann dein ergebnis nicht "kürzer" als deine operanden sein !

Siehe auch --> http://en.wikipedia.org/wiki/Bitwise_operation#AND

€: Ich seh gerade, das ist zwar richtig was ich geschrieben habe, passt aber nicht ganz zu deiner Frage :D Ich hab mir eben mal die Übung angeschaut, hatte nur dein q & q gesehen und dachte du meinst das obige damit :) In dem Fall gehts ja eher darum, was die Syntax in dem Verilog Beispiel bedeutet...das dürfte dann schon so stimmen wie du geschrieben hast...glaube ich :D
Zuletzt geändert von Iblis am 18. Jul 2009 15:27, insgesamt 1-mal geändert.

linn
Mausschubser
Mausschubser
Beiträge: 77
Registriert: 15. Okt 2008 21:16

Re: Monadisch Reduktion

Beitrag von linn »

Diablo hat geschrieben: Wenn ich z.B. q = 1001 habe und dann &q mache passiert folgendes
1 & 0 = 0 & 0 = 1 & 1 = 1
0 & 0 ist doch 0!

aber ich glaub du meinst das richtige:
&X[n] = (((X1 & X2) & X3) ... & Xn)
in deinem beispiel also:
(((1 and 0) and 0) and 1) = (( 0 and 0) and 1) = (0 and 1) = 0;

&X[n] ist also genau dann 1, wenn für alle i: X=1; (die 0 wird bei jeder verknüpfung weitergereicht, 0 & x = 0)
orX[n] ist genau dann eins wenn ein i existiert: X=1; (die 1 wird bei jeder verknüpfung weitergereicht, 1 or x = 1)
xorX[n] ist genau dann eins wenn eine ungerade Anzahl einser in dem Wort stehn. (das ergebnis wechselt bei jeder 1, x xor 1 = !x)
etc

edit: ob du beim MSB oder LSB anfängst ist egal, da die logischen verknüpfungen die wir hier benutzen eh alle kommutativ sind.

robert.n
Nerd
Nerd
Beiträge: 673
Registriert: 29. Sep 2008 19:17

Re: Monadisch Reduktion

Beitrag von robert.n »

Monadische Reduktion habe ich ganz ähnlich verstanden, nur dass bei mir etwas anderes rauskäme.

& 'b1001 = 1 & 0 & 0 & 1 = 0

Es ist quasi so ähnlich wie das fold in Scheme oder das reduce in Python. Die Bit-Sequenz wird quasi als Liste/Reihe von einzelnen Bits interpretiert, die mit dem entsprechenden Operator verknüpft werden.

Benutzeravatar
Diablo
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 210
Registriert: 6. Sep 2008 17:43
Wohnort: Kreis Offenbach

Re: Monadisch Reduktion

Beitrag von Diablo »

ja danke ich hab irgend wie an gleichheit anstelle von & gedacht :-b also NotXOR *kopfschüttel*
aber vom sinnhalt wird es reduziert auf 1 bit in dem immer die nebeneinander stehenden und dann deren ergebnis ...

Danke für die Antworten

Antworten

Zurück zu „TGdI 2“