Warum kann man einen Longwert, Stück für Stück zu einem Byte machen, wenn man die Long Zahl durch 256 teilt und warum reichen 8 Werte um die Zahl darzustellen?
In Java hat long 64 bits und byte 8 bits. Da konnte ich mir schon zusammenreiern, dass man sagt 2^8=256. Damit mach ich modulo die Longzahl. Ich soll die Zahl in einem Bytearray speichern, die größe ist 8, das heißt ich habe 8 bytes zur Verfügung, da konnte ich mir denken halt 64bits/8bits=8. Aber warum mache ich modulo 256 und warum ergibt das dann stück für stück meine longzahl?
Also woher weiß ich das?
1 Antwort
Wie du schon bemerkt hast ist 2^8 = 256, heißt wenn du durch 256 teilst schneidest du 8 Bits weg. Und bevor du sie wegschneidest willst du sie natürlich noch abspeichern, dafür das modulo, damit bekommst du die 8 bits.
Das selbe Prinzip wie wenn du im Dezimalsystem mit /10 die hinterste Stelle wegschneidest und sie mit %10 bekommst.
Jo, beim Programmieren sind eigentlich alle Zahlen Binärzahlen, sie werden nur anders angezeigt.
Also ja, das ist mit allen Zahlen-Datentypen möglich.
Zumindest mit Ganzzahlen. Float und Double sind dann nochmal ein bisschen anders aufgebaut.
Danke dir, weißt Du zufällig auch wie man einen byte zu int macht? Geht das?
Einfach zuweisen, wird automatisch umgewandelt:
byte y = 5;
int x = y;
Falls du 4 Bytes zu einem int machen willst:
int x = byte1 | byte2<<8 | byte3<<16 | byte4<<24;
Ok geht vlt. doch nicht, machs einfach zu von int zu byte, aber umgekehrt.
a = byte4;
a = a*256 + byte3;
a = a*256 + byte2;
a = a*256 + byte1;
Danke dir, das habe ich mir auch gedacht, was mich dabei jedoch gestört hat ist... Ich habe doch eine Longzahl oder nicht? WEnn ich eine Binärzahl nehmen würde und die durch modulo 10 teilen würde, dann würde ich ja auch nicht die binärzahl in dezimal haben, ist das bei den Datentypen allen möglich, weil die sogesagt alle aus Bits bestehen?