FB18 - Das Forum für Informatik

fb18.de / Bachelorstudieng / PM Technische Informatik

RS Aufgabe1

RS Aufgabe1 2007-01-13 20:57
Anonymer User
Ist mit ~10 -10 gemeint oder das Einerkomplement zu 10? das Einerkomplement zu 1010 ist doch 0101?

Re: RS Aufgabe1 2007-01-13 21:23
TriPhoenix
Was das Einerkomplement ist, hängt ganz von der Zahl der Bits ab. 10 kannst du wohl als 1010 darstellen, aber auch z.B. als 00001010. Das Einerkomplement ist je nachdem dann 0101 oder 11110101. Da es um Assembelraufgaben geht, würde ich schätzen, dass eine Zahl jeweils 32 Bit hat. Mit ~10 ist das Einerkomplement von 10 gemeint, mit ~(-10) das Einerkomplement von -10

Re: RS Aufgabe1 2007-01-13 21:29
Anonymer User
also ist das Einerkomplement von 10 mit 32 bits gleich 11111111111111111111111111110101 ? was ist dann 166 % ~10 ?

Re: RS Aufgabe1 2007-01-13 21:31
asdf
Ist mit ~10 -10 gemeint oder das Einerkomplement zu 10?
Tilde (~) bedeutet Negation in Sprachen wie C. Ich nehme mal
an, hier ist das Einerkomplement gemeint.

das Einerkomplement zu 1010 ist doch 0101?
Yep.

Re: RS Aufgabe1 2007-01-13 21:55
asdf
also ist das Einerkomplement von 10 mit 32 bits gleich 11111111111111111111111111110101 ?
Sehe ich auch so.

was ist dann 166 % ~10 ?
Sollte 166 sein.

11111111111111111111111111110101_2 = 4294967285_10

und

166 % 4294967285 = 166 [img]http://www.fb18.de/gfx/22.gif[/img]

Re: RS Aufgabe1 2007-01-13 22:18
Fred
Das Ergebnis hängt davon ab, ob man die Zahlen vorzeichenbehaftet interpretiert oder nicht (weil es verschiedene Divisionsbefehle für vorzeichenlos und vorzeichenbehaftet gibt).

int a = 166; int b = ~10; int c = a%b;
wird wahrscheinlich (nicht getestet) etwas anderes ergeben als

unsigned int a = 166; unsigned int b = ~10; unsigned int c = a%b;
Davon abgesehen ist die Aufgabenstellung verwirrend, da 166 % ~10 ganz sicher kein "Assemblerausdruck" ist. Und nach "Die Aufgaben bestehen darin" fehlt ein Komma [img]http://www.fb18.de/gfx/24.gif[/img]

Re: RS Aufgabe1 2007-01-13 22:46
Anonymer User
und wie soll ich die Aufgabe dann eurer Meinung nach lösen?

Re: RS Aufgabe1 2007-01-13 23:25
Fred
Ich würde die Zahlen vorzeichenbehaftet interpretieren, da die Verwendung des Minus-Zeichens auf dem Aufgabenblatt nahelegt, dass auch negative Zahlen erlaubt sind (muss aber wie gesagt nicht).

Re: RS Aufgabe1 2007-01-14 00:41
Goldl
166 % ~10 ist definitiv ein Ausdruck , den man auch verwenden kann:

Beispiel mov 166 % ~ 10 , %r1
das geht natürlich auch mit set

Re: RS Aufgabe1 2007-01-14 03:13
Fred
Dann habe ich nichts gesagt [img]http://www.fb18.de/gfx/16.gif[/img]

Re: RS Aufgabe1 2007-01-14 08:40
Anonymer User
Wie sieht denn ein ganzen programm, das 166 % ~10 berechnet aus? Und ist das Teil der Aufgabe?

Ich bin etwas verloren, bitte helft mir. Danke

Re: RS Aufgabe1 2007-01-14 14:25
Fred
mov 166 % ~10, %l0 Einfacher geht's doch nicht mehr, oder?

Re: RS Aufgabe1 2007-01-14 17:32
TriPhoenix
Macht mov nicht nur Register/Register? Ansonsten lieber set wegen den 32 Bit? Nebenbei glaube ich nicht, dass das so gewollt ist, dass der Assembler selber schon das Ergebnis ausrechnet, anstatt eines selbstgebauten Programmes [img]http://www.fb18.de/gfx/25.gif[/img]

Re: RS Aufgabe1 2007-01-14 18:36
Fred
Macht mov nicht nur Register/Register?
Nein. mov ist ein synthetischer Befehl, welcher mit Registern und Direktwert funktioniert.

Ansonsten lieber set wegen den 32 Bit?
Es sind doch auf keinen Fall mehr als 9 signifikante Bits, wenn ich den Divisionsrest von 166 durch irgendwas berechnen will.

Nebenbei glaube ich nicht, dass das so gewollt ist, dass der Assembler selber schon das Ergebnis ausrechnet, anstatt eines selbstgebauten Programmes [img]http://www.fb18.de/gfx/25.gif[/img]
Ich hab's erst auch nicht geglaubt, aber auf dem Aufgabenzettel steht, dass man die Werte der Assemblerausdrücke bestimmen soll. Von Berechnen ist da keine Rede.

Re: RS Aufgabe1 2007-01-14 21:17
Anonymer User

166 ~ 10 = 166

-166 ~ 10 = -166

166 ~-10 = 4

-166 ~-10 = -4

Weiss jemand warum ich diese Ergebnisse herausbekomme?