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?

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.

Woher ich das weiß:Hobby – Programmieren ist mein Hobby & Beruf
saddsa12 
Fragesteller
 16.12.2021, 00:04

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?

0
MrAmazing2  16.12.2021, 00:09
@saddsa12

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.

1
saddsa12 
Fragesteller
 16.12.2021, 18:58
@MrAmazing2

Danke dir, weißt Du zufällig auch wie man einen byte zu int macht? Geht das?

0
MrAmazing2  16.12.2021, 19:43
@saddsa12

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;
0
MrAmazing2  16.12.2021, 19:52
@MrAmazing2

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;
1