könnte jemand diese Frage mit Erklärung lösen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Der 80386-Prozessor ist ein 32-Bit-Prozessor und kann daher nicht direkt mit dem 8.8-Format arbeiten. Um eine Multiplikation von AX mit π im 8.8-Format auf einem 80386-Prozessor durchzuführen, müssen die Daten zunächst in das entsprechende Format umgewandelt werden.

Das 8.8-Format bedeutet, dass die Zahl in zwei Teile aufgeteilt wird: die oberen 8 Bits repräsentieren den ganzzahligen Anteil und die unteren 8 Bits repräsentieren den Nachkommanteil. Um π im 8.8-Format darzustellen, müssten Sie es zuerst in dieses Format umwandeln.

π hat eine unendliche Anzahl von Nachkommastellen, so dass es nicht möglich ist, es vollständig im 8.8-Format darzustellen. Sie könnten jedoch eine Näherung von π im 8.8-Format verwenden.

Eine mögliche Näherung von π im 8.8-Format ist 3.14 (00000011.00101110). Um AX mit 3.14 im 8.8-Format zu multiplizieren, müssten Sie zunächst AX in das 8.8-Format umwandeln. Angenommen, AX hat den Wert 1234 (hexadezimal 0x04D2). Dann würde die Umwandlung von AX in das 8.8-Format wie folgt aussehen:

1234 (dezimal)

= 0x04D2 (hexadezimal)

= 00000100.11010010 (binär, mit führenden Nullen aufgefüllt)

Woher ich das weiß:Recherche
KiwiCupcake2011  09.03.2023, 16:13

haha das hast du aus dem internet E XD

0
MartaDerMacher  09.03.2023, 16:39
@KiwiCupcake2011

ne aus ChatGPT ⣀⣠⣤⣤⣤⣤⢤⣤⣄⣀⣀⣀⣀⡀⡀⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄

⠄⠉⠹⣾⣿⣛⣿⣿⣞⣿⣛⣺⣻⢾⣾⣿⣿⣿⣶⣶⣶⣄⡀⠄⠄⠄

⠄⠄⠠⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣿⣿⣿⣿⣿⣿⣆⠄⠄

⠄⠄⠘⠛⠛⠛⠛⠋⠿⣷⣿⣿⡿⣿⢿⠟⠟⠟⠻⠻⣿⣿⣿⣿⡀⠄

⠄⢀⠄⠄⠄⠄⠄⠄⠄⠄⢛⣿⣁⠄⠄⠒⠂⠄⠄⣀⣰⣿⣿⣿⣿⡀

⠄⠉⠛⠺⢶⣷⡶⠃⠄⠄⠨⣿⣿⡇⠄⡺⣾⣾⣾⣿⣿⣿⣿⣽⣿⣿

⠄⠄⠄⠄⠄⠛⠁⠄⠄⠄⢀⣿⣿⣧⡀⠄⠹⣿⣿⣿⣿⣿⡿⣿⣻⣿

⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠛⠟⠇⢀⢰⣿⣿⣿⣏⠉⢿⣽⢿⡏

⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠠⠤⣤⣴⣾⣿⣿⣾⣿⣿⣦⠄⢹⡿⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠒⣳⣶⣤⣤⣄⣀⣀⡈⣀⢁⢁⢁⣈⣄⢐⠃⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠄⣰⣿⣛⣻⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡯⠄⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠄⣬⣽⣿⣻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠄⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠄⢘⣿⣿⣻⣛⣿⡿⣟⣻⣿⣿⣿⣿⡟⠄⠄⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠛⢛⢿⣿⣿⣿⣿⣿⣿⣷⡿⠁⠄⠄⠄

⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠉⠉⠉⠉⠈⠄⠄⠄⠄⠄⠄

0
ralphdieter  10.03.2023, 00:28
@KiwiCupcake2011

nicht lustig, sondern voll mit Fehlern:

  • Ein 32-Bit-Prozessor kann selbstverständlich eine 8.8-Multiplikation ausführen, wenn er einen mul-Befehl für 16-Bit-Integer hat.
  • Das Bitmuster 00000011.00101110 entspricht 3.1796875. Das ist keine gute Näherung von π.
  • Die Zahl 1234 kann gar nicht im 8.8-Format dargestellt werden. Bei 255.99609375 ist nämlich Schluss. Das berechnete Bitmuster entspricht 4.8203125 (=1234/256).

Aber es ist immer wieder verblüffend, wie leichtgläubig man wird, wenn etwas nur schön genug formuliert ist.

2
AchSo774 
Fragesteller
 10.03.2023, 12:40
@MartaDerMacher

Das ist wirklich ärgerlich und ich habe ihn die hilfreichste Antwort gegeben trotz es viele Fehler enthält. ChatGPT antworten sind sehr oberflächlich und gar nicht hilfreich. Du hast mir nur verwirrt mit diese komische Antwort !

Ist das Verwendung von ChatGPT nicht verboten hier ?!!!

0
MartaDerMacher  10.03.2023, 19:12
@AchSo774

Es tut mir sehr leid, ich bin genau so alt ab wie vielen Jahren diese App ist und wusste die Antwort natürlich nicht. Also dachte ich bevor ich nichts mach frage ich einfach ChatGPT.

Entschuldigung

2

Ein Wert x im 8.8-Format wird in einem 16-Bit-Register als 2⁸·x dargestellt. Solche Zahlen kann man problemlos mit der üblichen Integer-Arithmetik miteinander addieren oder mit einem Integer multiplizieren.

Wenn man zwei 8.8-Werte x und y als Integer multipliziert, ist das 32-Bit-Ergebnis 2¹⁶·x·y. Diese Zahl muss man also durch 2⁸ teilen, um wieder einen 8.8-Wert zu bekommen. Die untersten 8 Bit entsprechen weiteren Ziffern hinter dem Komma, die wegfallen. Statt sie einfach abzuschneiden, sollte man das Ergebnis runden: Ergebnis = (2¹⁶·x·y+2⁷)/2⁸.

Zur Darstellung von π rundest Du einfach 256·π≈804.24... auf die nächste ganze Zahl. Diese Näherung entspricht dann 804/256=3.140625 – genauer geht π eben nicht in 8.8.

Eine Multiplikation mit AX sieht dann etwa so aus:

pi = 804    ; π als 8.8-WORD
IMUL AX, pi ; r/m16 ⇒ DX:AX (32 Bit)
ADD AX, 128 ; Kommastellen runden

Das 8.8-Ergebnis steht jetzt in DL:AH und muss noch schön in ein Register kopiert werden. Die Kommastellen in AL fallen einfach weg. Wenn DX<−128 oder DX>127, gibt es einen Überlauf, weil das Ergebnis zu groß für 8.8 ist.