Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Technische Informatik » Adressierung von Integern » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Adressierung von Integern
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
yungmagnum
unregistriert
Adressierung von Integern Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,
ich habe in meinem Informatikstudium diese Aufgabe gestellt bekommen.

In Ihrem Programm haben Sie ein Array mit hundert 64-Bit-Integern. Das Array beginnt an der Speicheradresse 0x69eec0d0. An welcher Adresse befindet sich das neunte Element des Arrays (bei 1 beginnend zu zählen)?


Meine Überlegung wäre 0x69eec0d0 in eine Dezimalzahl zu überführen und dann mit 8*64 zu addieren. Diese Lösung ist jedoch falsch.
Kann mir hier jemand auf die Sprünge helfen?
Vielen Dank.
17.06.2019 12:26
NixJava
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Hallo,

die Antwort hängt von der verwendeten Architektur ab bzw. der Größe einer Speicherzelle. Üblicherweise bestehe eine Speicherzelle aus 8 Bit.

Zitat:
und dann mit 8*64 zu addieren

Das wäre nur richtig, wenn man jedes Bit einzeln adressieren könnte (kann man aber für gewöhnlich nicht).

Wenn man die o.g. 1-Byte-Adressierung zu Grunde legt, nimmt ein 64-Bit Integer 8 Speicherzellen ein.
17.06.2019 18:57
Informatik-Novize
Grünschnabel


Dabei seit: 27.09.2019
Beiträge: 4

RE: Adressierung von Integern Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Zitat:
Original von yungmagnum
Meine Überlegung wäre 0x69eec0d0 in eine Dezimalzahl zu überführen und dann mit 8*64 zu addieren. Diese Lösung ist jedoch falsch.
Vielen Dank.

Da brauchst du nichts in Dezimal umzurechnen und dann umständlich etwas zu multiplizieren. Du kannst das ganze sofort in Hexadezimal machen, mit dem wissen, dass [latex]64\ \text{Bit}\cdot\!\frac{1\,\text{Byte}}{8\,\text{Bit}} = 8\,\text{Byte}[/latex] sind. Das erste Integer reicht somit von Byte 0 bis Byte 7, das zweite von Byte 8 bis Byte 15, das dritte dann von 16-23 usw. Du musst also lediglich [latex](9-1)\!\cdot\!8\,\text{Byte}[/latex] zu deinem Adress-Offset von 0x69eec0d0 hinzuaddieren und landest schließlich bei der Adresse 0x69eec110, das ist die Startadresse deines 9. Integers. [latex]9-1[/latex] deshalb, weil die Adressierung ja bei 0 beginnt.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Informatik-Novize: 27.09.2019 22:04.

27.09.2019 22:03 Informatik-Novize ist offline Beiträge von Informatik-Novize suchen Nehmen Sie Informatik-Novize in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Technische Informatik » Adressierung von Integern