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
Was würdest du dann für 1K als hexadezimale Anfangsadresse schreiben.?
─ danielainformatik 18.01.2020 um 18:36Hab 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?