H2.2 Anzahl der Bit-Operationen

ivoch
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 199
Registriert: 3. Mär 2004 10:51

Re: H2.2 Anzahl der Bit-Operationen

Beitrag von ivoch »

Du kennst die Zahl aber erst gar nicht, deswegen heisst sie ja "x". :wink:

Alles, was gefragt wird, ist (mal wieder bei meinem Beispiel zu landen) zu zeigen, wie man 9*x ohne Multiplikation berechnen kann. Also in eure Lösung müsst ihr nur das tun:

9*x = ? //Aufgabenstellung

9*x = 8*x + x = (2^3)*x + x = (x << 3) + x //Eure Lösung

Das ist alles. :) Ihr könnt euch sogar einige Zwischenschritte sparen, es sollte aber schon erkennbar sein, wie ihr auf die Lösung gekommen seid.

Und was wenn nach (-9)*x gefragt würde?

Nun, ist das nicht dasselbe wie (-1)*9*x ? Wie schon oben gezeigt, so wird 9*x berechnet: 9*x = (x << 3) + x. Wie von Mathe bekannt, wenn man die linke Seite mal -1 multipliziert, muss man auch die rechte mal -1 multiplizieren, damit die Gleichung erhalten bleibt. Und wie man eine (binäre) Zahl mal -1 multipliziert, müsst ihr alle wissen (Aufgabe 2.1?).

k_b
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 213
Registriert: 15. Mär 2009 12:06

Re: H2.2 Anzahl der Bit-Operationen

Beitrag von k_b »

Hallo,

danke für die schnelle Antwort. Den Hinweis hatte ich auch gelesen, aber meine Frage zielte eigentlcih darauf ab, wie man das not(x) realisieren kann, aber das ist mir dann noch eingefallen. Ich kann ja bitweise NAND machen und als die beiden Eingänge des NANDs nehme ich 2-mal die Zahl die ich negieren möchte, dann bekomme ich bei 0 0 -->1 und bei 1 1--> 0 und zum Schluss addiere ich auf das, was da raus kommt noch ne 1 drauf.

ivoch
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 199
Registriert: 3. Mär 2004 10:51

Re: H2.2 Anzahl der Bit-Operationen

Beitrag von ivoch »

Ich glaube du bist immer noch ein wenig verwirrt. Was meinst du mit "not(x) realisieren"?

Nehmen wir an, das Ergebnis von -9*x wäre (x << 3) + not(x). Das wäre dann auch die gefragte Lösung und die Teilaufgabe wäre fertig - du brauchst nicht not(x) noch irgendwie entwickeln oder in Bits zerlegen oder mit Gattern darstellen oder sonst was machen :). Das heisst aber natürlich nicht, dass (x << 3) + not(x) tatsächlich die richtige Lösung von -9x ist ;).



Oder verstehe ich immer noch deine Frage falsch? Dann schick mir wenn du Lust hast deine Lösung dieser Teilaufgabe per PN. Ich werde dir natürlich nicht sagen dürfen ob sie richtig oder falsch ist, werde aber zumindest verstehen, was du gemeint hast.

Benutzeravatar
l.d126
Erstie
Erstie
Beiträge: 18
Registriert: 18. Apr 2009 16:26

Re: H2.2 Anzahl der Bit-Operationen

Beitrag von l.d126 »

wie viele Bit-Operationen braucht ein +?
Zuletzt geändert von l.d126 am 31. Okt 2009 16:01, insgesamt 2-mal geändert.

Benutzeravatar
m_stoica
Kernelcompilierer
Kernelcompilierer
Beiträge: 473
Registriert: 5. Dez 2008 20:19
Wohnort: Zuhause

Re: H2.2 Anzahl der Bit-Operationen

Beitrag von m_stoica »

ivoch hat geschrieben:2 Operationen ist richtig.
Da kann ich dir zu stimmen, aber sind es auch zwei Bit-Operationen? Meines wissens ist die Addition keine Bitoperation.

ice-breaker
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 216
Registriert: 14. Okt 2008 17:56

Re: H2.2 Anzahl der Bit-Operationen

Beitrag von ice-breaker »

Die Addition einer Binärzahl besteht ja auch zig Bit-Operationen.
Carry-In (and), Addition der Binärzahlen mit CarryIn, so dass man die Anazhl der Bit-Operationen wiederum als Funktion ausdrücken müsste mit der Anzahl der Bits von X als Input.
Hmm, ob das so kompliziert gemeint ist.

ivoch
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 199
Registriert: 3. Mär 2004 10:51

Re: H2.2 Anzahl der Bit-Operationen

Beitrag von ivoch »

Ja, + zählt als eine (bit-)Operation, genauso wie <<.

Es ist schon richtig, dass Addition keine bitweise Operation ist, von der Sicht des Programmierers aus gesehen. Früher waren die "richtigen" bit-Operationen auch tatsächlich schneller als Addition für einen Mikroprozessor, heute ist dies aber normalerweise nicht mehr der Fall. Wenn also ein Bit-Shift als eine Operation angesehen wird, könnt ihr auch die Addition als solche betrachten, zumindest für diese Aufgabe. Multiplikation ist viel langsamer als Addition, deswegen auch diese Aufgabe.

Antworten

Zurück zu „Archiv“