byte a=64, byte b=96. Warum ergibt nun byte c= (byte) (a+b) einfach 0? Müsste da nicht -48 rauskommen? (Java)?
2 Antworten
0? Nö -96 kommt da raus..
benutze auch mal den Windows Taschenrechner im Programmierermodus, dort siehst Du auch die binären Entsprechungen.
Du musst weg von der üblichen Schulmathematik und in binären Kategorien denken.
byte 64 = 0100 0000 +
byte 96 = 0110 0000 =
byte -96= 1010 0000
das linke Bit kennzeichnet bei Vorzeichenbehafteten Datentypen Vorzeichen an =1 oder aus = 0
Die Rechnerei ist wie beim addieren von Zahlen in der Schule, nur das wir lediglich die ziffern 1 und 0 haben... also von rechts nach links:
- 0+0=0
- 0+0=0
- 0+0=0
- 0+0=0
- 0+0=0
- 0+1=1
- 1+1=10?geht nicht... also 0 und 1 "merken"
- gemerkte 1+0+0=1 aber dieses Bit ist ja das Vorzeichen😱 und schon haben wir eine negative Zahl
...so kann ganz schnell das Vorzeichen kippen.
Das macht der Prozessor und eigentlich muss Dich das nicht weiter interessieren...
Schau Dir auch https://www.w3schools.com/java/java_data_types.asp an.
Das Verständnis von Variablen und Basistypen ist Basiswissen.


Sorry, aber das kann ich nicht nachvollziehen. Bei mir kommt da offensichtlich c = -96 raus, also weder c = 0 noch c = -48, wie du behauptest.
[getestet mit https://www.jdoodle.com/online-java-compiler/]
Mit manuellem Nachrechnen komme ich zum gleichen Ergebnis:
01000000 ( 64)
+01100000 ( 96)
—————————
10100000 (-96)
Und mit Windows-Taschenrechner...


Echt mal, auf so niedrigem Anfängerlevel war ich schon seit 35 Jahren nicht mehr unterwegs...