Zahlen als Little Endian



  • Hallo,

    ich will Zahlen als little endian darstellen. D.h. im Binärcode, nur mit dem kleinstwertigen Koeffizienten an erster Stelle.

    also so:

    10 → (0101)
    16 -> 00001
    25 -> 10011

    Kann mir jemand helfen?

    danke!



  • Bei Little-Endian ist die bytereihenfolge vertauscht, nicht alle einzelnen bits.



  • d.h. die von mir angegebenen Beispiele sind falsch?

    Wie würde ich es denn richtig als Programm aufschreiben, dass mir die Zahlen konvertiert?



  • chico09 schrieb:

    d.h. die von mir angegebenen Beispiele sind falsch?

    Ja

    chico09 schrieb:

    Wie würde ich es denn richtig als Programm aufschreiben, dass mir die Zahlen konvertiert?

    Wie eine Zahl in der Bitdarstellung ausgegeben wird wurde hier schon oft besprochen, was du noch machen musst wäre dann halt beim niedrigsten byte anzufangen.

    Eine 1 im unsigned int (4 byte, angenommen) wäre im little endian z.b.:

    0000 0001  0000 0000  0000 0000  0000 0000
    


  • Also wir müssen die Aufgabe (ist wohl dann doch nicht der little Endian - da wir - wie ich oben beschrieben habe - die einzelnen bits umdrehen müssen). Kann mir eventuell jemand helfen - da ich blutiger Anfänge bin und wir dazu rein gar nichts erklärt bekommen haben.

    Ich habe zwar schon programmcode gefunden, wie ich eine zahl in binär umwandeln kann, jedoch keine ahnung, wie ich den binärcode dann umdrehen kann???

    danke für jede hilfe


  • Mod

    chico09 schrieb:

    Ich habe zwar schon programmcode gefunden, wie ich eine zahl in binär umwandeln kann, jedoch keine ahnung, wie ich den binärcode dann umdrehen kann???

    Merkwuerdig, denn normalerweise gehen die meisten Fragen zu Binaerdarstellungen darum, wie man diese in die "richtige", big-endian Ordnung bekommt. Denn die Berechnung der Binaerdarstellung faengt in der Regel mit den niederwertigsten Bits an.

    Vielleicht waere es ein guter Schritt, wenn du, anstatt Code zu "finden", dir stattdessen eigene Gedanken machen wuerdest? Oder wenigstens versuchst zu verstehen, wie der abgeschrieben Code funktioniert?



  • Wusst ich doch, daß ich da mal was gemacht hab - DEADBEEF

    union ULU					// union for ip address
    {
    	unsigned char c[4];		// hier: .c[3] = 0xde, .c[2] = 0xad, .c[1] = 0xbe, .c[0] = 0xef
    	unsigned short s[2];	// big endian: .s[0] = 0xdead - hier: little endian: .s[0] = 0xbeef
    	unsigned long l;		// Eingabe: .l = 0xdeadbeef
    };
    

  • Mod

    EOP schrieb:

    Wusst ich doch, daß ich da mal was gemacht hab - DEADBEEF

    union ULU					// union for ip address
    {
    	unsigned char c[4];		// hier: .c[3] = 0xde, .c[2] = 0xad, .c[1] = 0xbe, .c[0] = 0xef
    	unsigned short s[2];	// big endian: .s[0] = 0xdead - hier: little endian: .s[0] = 0xbeef
    	unsigned long l;		// Eingabe: .l = 0xdeadbeef
    };
    

    Ich bezweifle, dass dies das ist, wonach der Threadersteller fragte. Wenn ich das richtig verstanden habe, hat er eine Zeichenkette oder eine Ausgabe wie "1000101", die ihm sein abgeschriebener Code gibt, und will "1010001".

    Das gilt übrigens auch für die anderen Antworten. Die Begriffe Little- und Big-Endian beziehen sich nicht nur* auf Bytedarstellungen im Computer, sondern allgemein auf Zahlendarstellungen. So wie die Zahl "Einhundert" im Big-Endian Dezimalsystem "100" ist und im little-Endian "001".

    *: Es ist jedoch - zugegeben - sehr ungewöhnlich sie so zu benutzen. Es kann gut sein, dass meine Interpretation des Threaderstellers falsch ist. Jedenfalls ist sie widersprüchlich, da er einerseits von Binärdarstellungen redet (und auch solche Beispiele zeigt), andererseits von little-endian spricht, einem Begriff, der sich normalerweise auf Bytedarstellungen bezieht. Meine Annahme, dass er den Begriff little-endian auf die Binärdarstellung bezieht kommt daher, dass es zumindest möglich ist, den Begriff so zu benutzen. Umgekehrt, dass er little-endian als Byteordnung einer Binärdarstellung versteht, passt es nicht zu seinen Beispielen.



  • chico09 schrieb:

    d.h. die von mir angegebenen Beispiele sind falsch?

    Naja du musst schon selbst wissen was du brauchst - wir können das nicht erraten.

    chico09 schrieb:

    Wie würde ich es denn richtig als Programm aufschreiben, dass mir die Zahlen konvertiert?

    Fang erstmal an damit ne Zahl binär auszugeben.
    Und versuch parallel dazu rauszufinden was mit der Aufgabenstellung gemeint ist. Also Byte-Reihenfolge oder Bit-Reihenfolge.
    Wenn du das hast, dann kannst du den "little endian" Teil angehen.



  • hustbaer schrieb:

    Naja du musst schon selbst wissen was du brauchst - wir können das nicht erraten

    Wenn ich das immer wüsste was sie wollen wenn sich Leute unklar/falsch ausdrücken, dann würde ich evtl. als Hellseher bei Dieter Bohlen auftreten und richtig Kohle machen.

    EDIT:
    Ansonsten

    std::reverse(myvector.begin(),myvector.end());
    

    (ein weiterer Versuch Gedanken zu lesen).



  • @EOP
    Es gibt da einige paradoxe Effekte.

    z.B. dass es ein Anzeichen dafür ist, dass man eine Fremdsprache (mündlich) endlich wirklich gut drauf hat, wenn man anfängt gewisse Tippfehler bzw. Rechtschreibfehler zu machen.
    k.A. wie man den Effekt nennt, hab' ich aber auf jeden Fall nicht selbst erfunden sondern wo gelesen. Und mir dann, nach kurzem "WTF?" gedacht "... ja, stimmt, geht mir mit Englisch in letzter Zeit so. Cool :-)".

    Genau so beobachte ich dass Leute die von einer Sache wirklich viel verstehen sich schwer tun andere Leute zu verstehen, die wenig Plan von dieser Sache haben. Wohingegen andere Planlose oder Minderbeplante ohne Probleme verstehen was gemeint war.
    Oder dass Leute die sehr logisch denken nicht verstehen was andere, weniger logisch denkende Menschen gemeint haben könnten.
    (Also ich meine nicht dass sie den Fehler erkennen und sich dann denken "OMG so ein Koffer", sondern dass sie wirklich ernsthaft nicht oder falsch verstehen was gemeint war.)

    Geht mir z.B. auch oft so, dass ich bei diversen Hausaufgaben die hier ab und an gepostet werden keinen Plan habe was der Prof eigentlich will. 😃



  • Solltest du um die Zeit nicht eigentlich im Bett sein?

    LOL, made my day anyway.

    EDIT:
    dunno what you mean with Fremdsprache. 😃

    EDIT #2:
    Ja, man versteht es einfach nicht. Ich denk mir dann meistens "das sind doch zwei widersprüchliche Aussagen in einem Satz - kein Bock meine Zeit mit sowas zu verschwenden" und gehe weiter.


Anmelden zum Antworten