Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Technische Informatik (http://www.informatikerboard.de/board/board.php?boardid=7)
--- Adressierung von Integern (http://www.informatikerboard.de/board/thread.php?threadid=4187)
Geschrieben von yungmagnum am 17.06.2019 um 12:26:
Adressierung von Integern
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.
Geschrieben von NixJava am 17.06.2019 um 18:57:
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.
Geschrieben von Informatik-Novize am 27.09.2019 um 22:03:
RE: Adressierung von Integern
| 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]](http://www.matheboard.de/latex2png/latex2png.php?64\ \text{Bit}\cdot\!\frac{1\,\text{Byte}}{8\,\text{Bit}} = 8\,\text{Byte})
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
\!\cdot\!8\,\text{Byte}[/latex]](http://www.matheboard.de/latex2png/latex2png.php?(9-1)\!\cdot\!8\,\text{Byte})
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]](http://www.matheboard.de/latex2png/latex2png.php?9-1)
deshalb, weil die Adressierung ja bei 0 beginnt.
Forensoftware: Burning Board, entwickelt von WoltLab GmbH