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..

Bild zum Beitrag

benutze auch mal den Windows Taschenrechner im Programmierermodus, dort siehst Du auch die binären Entsprechungen.

Bild zum Beitrag

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.

 - (Computer, Mathematik, programmieren)  - (Computer, Mathematik, programmieren)

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.

Bild zum Beitrag

[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...

Bild zum Beitrag

 - (Computer, Mathematik, programmieren)  - (Computer, Mathematik, programmieren)

Erzesel  10.10.2021, 16:39

zwei Leute ein Gedanke... warst schneller...🤣

0
Erzesel  10.10.2021, 16:42

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

0