Hexadezimale Anfangsadresse

Aufrufe: 399     Aktiv: vor 10 Monaten

1

Hi zusammen,

hat jemand hier einen Lösungsansatz.

"Wie lauten die hexadezimalen Anfangsadressen für byteweise organisierte Speicherbereiche, die auf den Grenzen 1K, 4K, 1M, 16M, 1G beginnen? Die Adressbreite sei 32Bit."

Ich wüsste auch nicht was genau mit 1K gemeint ist? und was genau sind hexadezimale Anfangsadressen?

ist eine Übungsaufgabe (Skript) aus Informatik-Einführung.

LG

DANKE

gefragt vor 10 Monaten, 2 Wochen
d
danielainformatik,
Student, Punkte: 46

 
Kommentar schreiben Diese Frage melden
3 Antworten
1

1024 = 10000000000 binär Da man je 4 Bits pro Hex verwendet lässt sich mit dargestellten Abständen/Lücken leicht der Hexwert ermitteln 100 0000 0000 = 4 0 0

Bei 32 Bit wären es halt noch mit Nullen aufgefüllt

0000 0000 0000 0000 0000 0100 0000 0000 binär oder 00000400 Hex

geantwortet vor 10 Monaten
h
halloworld42
Sonstiger Berufsstatus, Punkte: 125
 
Kommentar schreiben Diese Antwort melden
1

Hi!

Zur Erklärung der ganzen Schreibweisen da: Diese "Grenzen" sind die Bytes an Speicher. Also beispielsweise haben wir 1KByte an Speicher oder 4KByte an Speicher.

Ich denke mit den Anfangsadressen sind einfach nur die Schreibweise für diese Grenzen gemeint. Also bei 16 Bytes an wären 10000 Binär geschrieben und in Hex umgewandelt wäre das 10.

Ich hoffe das kann dir helfen! :)

geantwortet vor 10 Monaten, 2 Wochen
code mit flow
Student, Punkte: 175
 

Was würdest du dann für 1K als hexadezimale Anfangsadresse schreiben.?
Hab es nämlich noch nicht wirklich verstanden

aber ich würde jetzt mal einen , wenn vllt auch nicht ganz sinnvollen Vorschlag machen

FFFF(hoch 10)

Wie ich darauf komme:
Ein Kilobyte sind ca. tausend Byte. Genauer: 2 hoch 10 Byte = 1.024 Byte

die größte Zahl die ich mit 2 Bytes binär ausdrücken kann, ist 1111111111111111, in HexSchreibweise: FFFF

Macht das sinn?

  ─   danielainformatik, vor 10 Monaten, 1 Woche

1K sind 1024 Bytes Dezimal. In Hex umgewandelt ist das 400. Das würde ich als Anfangsadresse bezeichnen.

Die Adress Range ist dann 0 bis 3FF.

Wie bist du denn auf die 2 Bytes gekommen? Was wäre dann bei 16K?

  ─   code mit flow, vor 10 Monaten, 1 Woche

Also, richtig verstanden hab ich das wohl nicht.
Wenn s recht ist, hier etwas ausführlicher meine denkweise...sorry schon mal für langen text
ich dachte ja, dass ich für 4 Bits! ein HexZeichen brauchen. z.b 0010 (4 Bits) ist in Hex: 2.
entsprechend brauch ich doch für 1 Bytes(=8Bits) 2HexZeichen: 1111 1111 (8Bits = 1Byte), in Hex: FF
Deshalb versteh ich schon nicht wie 1024 Bytes 400 in Hex sind (irgendwo muss ja dann schon hier mein Denkfehler sein, oder?)

so, da ich aber also davon ausgehe, dass ich bei 1024 Bytes zu viel "Platz" benötige, um dies in Hex auszuschreiben, dachte ich an eine kürzere "schreibweise".
da ich also 1KiloByte darstellen mag, was ich ja auch in Form von 2^10Bytes=1024Bytes=1KByte machen kann, war meine überlegung, dass ich dies auch auf Hex anwenden kann.

naja, und den rest versteh ich noch gar nicht. also das mit adressRange, anfangsadresse... etc istmir noch immer ein rätsel. vermutlich hab ich einfach die tage auch viel zu viel gelernt, dass ich das banalste schon nicht mehr verstehe...


  ─   danielainformatik, vor 10 Monaten, 1 Woche
Kommentar schreiben Diese Antwort melden
1

Hallo, ist eigentlich gar nicht so kompliziert. Erstmal gar nicht über 1, 2 oder 4 Byte nachdenken. Das Dezimalsystem zählt von 0 - 9. Dann kommt der Überlauf 1-0, also 10. Bei Hex ist das genau so. Da kommt der Überlauf (10) bei dezimal 16. Die Zählweise ist 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F->10, 11, 12.... Die Programmiersprache C verlangt übrigens bei hexadezimaler Darstellung ein 0x... voranzustellen. also ist dezimal 16 in HEX Darstellung 0x10. Der nächste Überlauf ist dann bei 0x100 was natürlich nicht 10 * 10 sondern 16 * 16 entspricht, gibt 256. Der nächste Überlauf ist dann 0x1000 was 256 * 16 = 4096 entstricht. So geht es munter weiter.

Die Angabe 1K entspricht nicht 1000 dezimal. Das wäre übrigens 1k wie 1kg. Fällt was auf? Um hier eine Unterscheidung zu haben werden die HEX Zahlenkürzel immer groß geschrieben. 1K sind 1024 Byte. 256 * 4 ist halt am nächsten dran an 1000. Und da greift auch schon die "normale" Mathematik. 0x100*0x4 ist ?!?! 0x400. Das ist jetzt die hexadezimale Anfangsadresse für 1K. 4K ist dann 1K * 0x4, also 0x400 * 0x4 ist - aufgepasst - nicht 1600 sondern 0x1000 weil wir ja den Überlauf nicht nach 9 sondern nach 0xF haben.

1M ist dann wie sonst auch 1K * 1K also 0x400*0x400 und das gibt 0x100000. 16M wird dann - Du ahnst es schon - 0x100000 * 0x10. Das ist ja einfach: 1000000. 1G sind dann 1M * 1K = 0x100000 * 0x400 = 0x40000000.

Was hat das jetzt alles mit 32 Bit Adressbreite zu tun? Erstmal nichts. Das bisher war Mathe. Die Adressbreite legt aber die Obergrenze fest. Die ist 2^32 und das ist eine hundskrumme Zahl oder halt 4G :-)

Nun kann man in einem Byte bis 256 darstellen. 0x00 bis 0xff. Mit 2 Byte gehen 0x0000 bis 0xffff. mit 4 Byte gehen 0x0000_0000 bis 0xffff_ffff. Damit lassen sich alle diskutierten HEX zahlen mit 4 Byte darstellen. Der Unterstrich hat nur den Sinn es besser darzustellen. Ist kein muss.

Ich hoffe nicht, ich habe Dich zu arg verwirrt. Bei Fragen, fragen. Übrigens, ich mach den Job schon seit über 30 Jahren und bin noch nicht verzweifelt, also Kopf hoch.

LG jobe

geantwortet vor 10 Monaten, 1 Woche
j
jobe
Sonstiger Berufsstatus, Punkte: 135
 
Kommentar schreiben Diese Antwort melden