Wieso gibts kein unsigned in Java?



  • Mr. N schrieb:

    pale dog schrieb:

    nep schrieb:

    Ich sag ja auch nicht, dass es nicht auch mit signed-Typen geht, es ist nur einfacher wenn man gleich unsigned-Typen hat.

    hast du ein konkretes beispiel?
    was ist einfacher mit unsigned typen?
    an bitoperationen kann's doch nicht liegen, oder?

    doch. und modulo.

    und was ist doof damit? kann das irgendjemand erklären?



  • pale dog schrieb:

    Mr. N schrieb:

    pale dog schrieb:

    nep schrieb:

    Ich sag ja auch nicht, dass es nicht auch mit signed-Typen geht, es ist nur einfacher wenn man gleich unsigned-Typen hat.

    hast du ein konkretes beispiel?
    was ist einfacher mit unsigned typen?
    an bitoperationen kann's doch nicht liegen, oder?

    doch. und modulo.

    und was ist doof damit? kann das irgendjemand erklären?

    shiften geht zB nicht richtig



  • Könnte ihr auch mal ein richtiges Beispiel bringen, bei denen mit signet typen bitoperationen nicht gehen und nicht nur blabla.
    http://de.wikipedia.org/wiki/Bitweiser_Operator

    In Java sind alle Ganzzahl-Datentypen vorzeichenbehaftet und die Operatoren "<<" und ">>" führen arithmetische Verschiebungen durch. In Java gibt es zusätzlich den Operator ">>>", der eine logische Rechtsverschiebung durchführt. Da logische und arithmetische Linksverschiebungen identisch sind, gibt es keinen "<<<" Operator.



  • Mr. N schrieb:

    shiften geht zB nicht richtig

    das halte ich für ein gerücht.
    hast du mal ein codebeispiel, das fehlerhaftes shiften demonstriert?



  • pale dog schrieb:

    Mr. N schrieb:

    shiften geht zB nicht richtig

    das halte ich für ein gerücht.
    hast du mal ein codebeispiel, das fehlerhaftes shiften demonstriert?

    Ich lese gerade, dass es wohl einen operator >>> gibt.



  • pale dog schrieb:

    nep schrieb:

    Ich sag ja auch nicht, dass es nicht auch mit signed-Typen geht, es ist nur einfacher wenn man gleich unsigned-Typen hat.

    hast du ein konkretes beispiel?
    was ist einfacher mit unsigned typen?
    an bitoperationen kann's doch nicht liegen, oder?

    Na ganz einfach, wurde ja auch schon mal erwähnt. Was wenn du z.B. Bytes auslesen willst, aber eben kein unsigned char hast?

    Oder was wenn du Bytes auslesen willst die in 32 Bit Wörter gepackt sind, und diese dann z.B. auswerten willst?

    Und ja, natürlich geht das auch ohne unsigned-Typen, aber es ist halt einfacher wenn man welche hat (bzw. z.B. speicherschonender)



  • nep schrieb:

    pale dog schrieb:

    nep schrieb:

    Ich sag ja auch nicht, dass es nicht auch mit signed-Typen geht, es ist nur einfacher wenn man gleich unsigned-Typen hat.

    hast du ein konkretes beispiel?
    was ist einfacher mit unsigned typen?
    an bitoperationen kann's doch nicht liegen, oder?

    Na ganz einfach, wurde ja auch schon mal erwähnt. Was wenn du z.B. Bytes auslesen willst, aber eben kein unsigned char hast?

    Oder was wenn du Bytes auslesen willst die in 32 Bit Wörter gepackt sind, und diese dann z.B. auswerten willst?

    Und ja, natürlich geht das auch ohne unsigned-Typen, aber es ist halt einfacher wenn man welche hat (bzw. z.B. speicherschonender)

    Beispiel! Und nicht nichts sagende Fragen. 🙄



  • blablabla... schrieb:

    Beispiel! Und nicht nichts sagende Fragen. 🙄

    Das sind doch Beispiele.

    Klar im Grunde kann man mit signed-Integern auch alles irgend wie zurecht frickeln was man mit unsigned-Integern leichter machen kann. Aber man kann mit signed-Integern ja auch alles irgend wie zurecht frickeln, was man mit Fließkomma zahlen machen kann. Also streicht bitte auch Fließkomma zahlen :p

    Und die unannehmlichkeiten fangen ja schon bei a > b an.



  • nep schrieb:

    Na ganz einfach, wurde ja auch schon mal erwähnt. Was wenn du z.B. Bytes auslesen willst, aber eben kein unsigned char hast?

    dann nimmt man 'signed char' bzw. 'byte' (in Java)

    nep schrieb:

    Oder was wenn du Bytes auslesen willst die in 32 Bit Wörter gepackt sind, und diese dann z.B. auswerten willst?

    wieso ist dafür ein unsigned-datentyp besser?

    nep schrieb:

    Und ja, natürlich geht das auch ohne unsigned-Typen, aber es ist halt einfacher wenn man welche hat (bzw. z.B. speicherschonender)

    wieso einfacher und wieso speicherschonender 😕

    ich schliesse mich meinem vor-vorgänger an: du hast nicht eine erklärung geliefert. 😞



  • rüdiger schrieb:

    Und die unannehmlichkeiten fangen ja schon bei a > b an.

    ... und gehen bei den arithmetischen Operationen weiter. Nur stellt sich doch die Frage, wozu man die an dieser Stelle braucht? Wenn man unsigned arbeitet, dann interessieren ja offenbar die Bits, also verwendet man Bitoperationen.

    Und wer auf die arithmetischen Operationen doch nicht verzichten kann, der verwendet den nächst höheren Datentyp:

    byte b = ...;
    int i = (int) b & 0xFF;
    


  • byto schrieb:

    Und wer auf die arithmetischen Operationen doch nicht verzichten kann, der verwendet den nächst höheren Datentyp:

    byte b = ...;
    int i = (int) b & 0xFF;
    

    Reicht nicht int i = (int) b; ?



  • hansele schrieb:

    Reicht nicht int i = (int) b; ?

    Die Ergebnisse wären unterschiedlich, wenn b negativ ist.

    byte b = -1; 
            int i = (int)b;
    
            System.out.println(i); //liefert -1
    
    byte b = -1; 
            int i = b & 0xFF;
    
            System.out.println(i); //liefert 255
    

Anmelden zum Antworten