Zum Inhalt springen

Fisinym

Mitglieder
  • Gesamte Inhalte

    6
  • Benutzer seit

  • Letzter Besuch

Beiträge von Fisinym

  1. vor 8 Minuten schrieb elgorgo:

    Die 00000000 = 0 braucht auch einen Platz.
    Und damit kann der positive Bereich eben einen Platz weniger belegen.

    Daran habe ich ehrlich gesagt auch noch gar nicht gedacht, das macht aber natürlich schonmal sehr viel Sinn :D 

    Aber wie ich jetzt z.B. eine -128 darstellen würde wüsste ich ja jetzt trotzdem noch nicht

     

    vor 6 Minuten schrieb 0x00:

    Naja 2^8 = 256, 127 (Summe aller positiven) + 127 (Summe aller negativen) = 254, bleiben noch zwei übrig. 0 braucht einen Platz und dann kannst du entweder bis 128 oder -128 gehen.

    Wenn du in beide Richtungen nur bis 127 gehen würdest würdest du eine Bitkombination verschenken.

    Da wäre wieder dasselbe, die Rechnung macht für mich auf jeden Fall Sinn, aber ich verstehe trotzdem nicht, wie ich dann z.B. die (-128) darstellen würde - 

    die übrige Bitkombination wäre ja wahrscheinlich die 1000 0000 dann, wenn ich das richtig verstehe, oder? Wird diese dann einfach z.B. als -128 definiert, einfach nur um Sie nicht zu verschwenden, auch wenn das "normal gerechnet" bzw. umgewandelt gar nicht die -128 ergeben würde?

     

    Und danke euch beiden auf jeden Fall schonmal :) 

  2. Hallo, ich habe einmal eine kurze Frage - anbei erstmal meine Tabelle und Notizen zu den verschiedenen Datentypen:

    image.png.22ea536f36b091aba6951c671f9e49af.png

     

     

    Was ich über die Datentypen bzw. deren Wertebereiche verstanden habe, ist ja schon darunter vermerkt - was ich jedoch nicht verstehe, ist, warum der negative Bereich der Werte nicht genauso wie im positiven um 1 verringert wird.

    Nach meinem Verständnis wäre der höchstmögliche Wert für bspw. ein byte:

     

    positiv: 0111 1111 entspricht +127

    negativ: 1111 1111 entspricht -127

     

    Warum ist jedoch der Wertebereich im negativen immer um eins höher? 

     

  3. vor 40 Minuten schrieb Whiz-zarD:

    Alles hat ein Ende. (Nur die Wurst hat zwei.) ;)

    Ein Integer ist 32 Bits groß. Also ist der Zahlenbereich beschränkt. Nämlich von -2147483648 bis 2147483647. Das höchste Bit wird als Vorzeichen gezählt.

    Wenn du unendlich um 1 erhöhen könntest, würdest du irgendwann mehr als 32 Bits benötigen. Das passiert aber nicht. Das kann man sich halt wie eine Uhr vorstellen, die ja auch wieder von Vorne anfängt.

    Hier mal die binäre Schreibweise:

    0111 1111 1111 1111 1111 1111 1111 1111 =  2147483647 (höchster Wert)
    Um 1 erhöht:
    1000 0000 0000 0000 0000 0000 0000 0000 = -2147483648 (niedrigster Wert)
    
    
    1111 1111 1111 1111 1111 1111 1111 1111 = -1
    Um 1 erhöht:
    0000 0000 0000 0000 0000 0000 0000 0000 =  0
    

     

    Danke dir dass du dir nochmal die Mühe machst, aber hatte deine Antwort vorher schon verstanden :D:D 

    Du hast bestimmt gesehen dass ich dir geantwortet habe, und deswegen nochmal geschrieben, oder? 

    Dein Zitat war ganz unten in meiner Antwort- darauf hatte ich geschrieben, dass das für mich sinnig ist und ich das Problem jetzt verstehe. Wollte mit der Antwort, die du jetzt zitiert hast, nur nochmal verdeutlichen, dass die Antworten die vor deiner Lösung genannt wurden in meinen Augen nicht die Lösung beinhalten - denn diese "Lösungen" hatte ich ja selber erst einmal im Kopf.

    Aber die Erklärung war auf jeden Fall nochmal top, hätte ich es vorher nicht verstanden wäre es spätestens jetzt in meiner letzten Gehirnzelle angekommen 😆 Also danke dir sehr :)

    LG

     

    Edit: sehe gerade, dass ich in dem Post noch einmal geschrieben "a wäre nur einmal 50", ich glaube daran hat es gelegen, dass du dachtest, ich verstehe es nicht - habe mich ziemlich dumm ausgedrückt :D Aber a ist also alle 50 + 2^31 -1 Durchläufe =50, und deshalb spuckt die Konsole in etwa jede Sekunde 1x die Zahl 50 aus, richtig, oder?

  4. Also erstmal danke an alle :) Bezüglich dem formatieren, dachte ich mir schon dass das kommt :D hätte ich echt machen sollen, sorry 🤦‍♂️

     

    vor 15 Stunden schrieb be98:

    Licht bleibt immer true. Du hast keine Abbruchbedingung für deine while-schleife.du könntest lich auf falsche setzen wenn a = 50. Außerdem formatiere das bitte sauberer.

    Dass es keine Abbruchbedingung gibt, war mir bewusst - nur gehört zur Anweisung "System.out.println" ja die if-Bedingung "a==50" - deswegen macht es ja trotz der unendlichen while-Schleife keinen Sinn, dass die 50 mehrmals ausgespuckt wird, oder? a müsste doch unendlich lange um 1 erhöht werden, aber wie schon erwähnt nur 1x 50 sein und auch nur während diesem einen Durchgang dann ausgegeben werden - heißt in der Konsole stünde

    Zitat

     

    Das Licht ist an!

    50 

     

     

    und danach passiert wird a unendlich lang weiter erhöht, aber nie wieder ausgegeben

     

     

     

     

    vor 11 Stunden schrieb Whiz-zarD:

    Nein, eben nicht. Sonst wäre nur eine 50 zu sehen. ;)

    Wenn man auf die maximale Zahl eine 1 addiert, erhält man die minimalste Zahl und umgekehrt

    public static void main(String[] args) {
      int a = Integer.MAX_VALUE;
      System.out.println(a++); //  2147483647
      System.out.println(a);   // -2147483648
    }

    Das Inkremenieren von a in Zeile 14 wird also fröhlich ausgeführt, macht einen Überlauf und kommt irgendwann bei der 50 wieder an.

    Fun Fact: Das Verhalten macht sich Minecraft zu Nutze, indem ein Timer eine Variable vom Typ long hochzählt. Ist der Wert wieder bei 0, ist ein Tag vorbei.

     

    Das macht für mich am meisten Sinn, daran wird es denke ich mal auch liegen wenn ich eure Antworten alle richtig verstanden habe. Der Abstand ist nämlich auch ziemlich groß zwischen den "50", heißt es würde passen dass a einfach überläuft in der Zwischenzeit.

     

    Danke euch allen :) 

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...