charArray

sinclair

Aktives Mitglied
hallo leute

kleine frage:
man stelle sich binär hat den Inhalt =1010
decimal = binär.charAt(i);
System.out.println(decimal);
ich gehe davon aus, das die erste ausgabe, welche geprintet wird, ist 1.
allerdings ist das nicht der fall.

ausgabe:
49
48
49
48
kann sich jemand das erklären, ich blick da nicht durch.
 
Zuletzt bearbeitet:

Robinson97

Aktives Mitglied
Wie Joose schon gesagt hat arbeitet java bei Zahlen oder Buchstaben mit ASCII Codes. Das bedeutet das Zahlen mit ihrem ASCII Code in einem Char dargestellt werden so ist z.B 1 eine 49, 2 eine 50 usw. Das selbe gilt auch bei Buchstaben: a ist 97, b ist 98 usw. Über den Link von Joose kannst du nachsehen welcher Decimalzahl dein Char entspricht.:D
 
Zuletzt bearbeitet:

sinclair

Aktives Mitglied
sorry das ich erst jetzt antworte.
kann mir dann jemand erklären, wieso bei dieser ausgabe das richtige raus kommt?
decimal = binär.charAt(i) - '0';
das interessante ist das '0'.
bei dieser Schreibweise, kommt das richtige raus..
 

InfectedBytes

Top Contributor
wegen genau der Begründung die Joose und Robinson97 bereits gegeben haben^^
In deinem Binärstring steht "101010"
charAt liefert also '1' bzw '0'. Dies sind aber Zeichen und keine Zahlen.
'0' hat den Wert 48
'1' hat den Wert 49
'2' hat den Wert 50
'3' hat den Wert 51
...
'A' hat den Wert 65
'B' hat den Wert 66
...

wenn dein charAt ein '1' liefert wird also effektiv '1' - '0' gerechnet, was eben 49-48=1 ist
'0' - '0' = 48-48=0
 
Zuletzt bearbeitet:

sinclair

Aktives Mitglied
sorry, ich bin zu blöd um das zu verstehen..
mir ist das mit dem char langsam klar, wieso liefert aber mein char, wenn ich -'0' schreibe, am schluss das richtige?
 

InfectedBytes

Top Contributor
ASCII

Schritt für Schritt:
binär="101010";
decimal = binär.charAt(i) - '0';

Wenn i nun 0 ist, dann liefert dir charAt(i) den character '1'.
Da das ZEICHEN '1' den WERT 49 hat und das Zeichen '0' den Wert 48. Wird also 49 - 48 gerechnet, was eben gleich 1 ist.

chars sind im Grunde nur Zahlen, deren Wertebereich von 0 bis 65535 geht (sind genaugenommen Unicode zeichen)
 
Zuletzt bearbeitet:

Ähnliche Java Themen


Oben