Ergebnis 1 bis 10 von 10

Thema: Bitweises Shiften

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Zitat Zitat von mq Beitrag anzeigen
    Nope, das ist Maschinen- (und ich denke teilweise sogar Compiler-) abhängig. Und da 262143 größer als 32767 (und 65535) ist, kann's bei dir schonmal nicht 16 bit sein.
    Kurz: deine Unterlagen stammen entweder aus der 16 bit-Ära oder ihr Autor war inkompetent :P
    wenn ich aber unter Pascal
    Code (pascal):
    writeln(sizeof(integer));

    eingebe, dann zeigt er mir eine größe von 2 Bytes, also 16 Bit, an.

  2. #2
    Wie bereits mein Vorredner erwähnte, ist das abhängig von der Maschine, dem Betriebssystem und dem Compiler.
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    Code (pascal):
    writeln(sizeof(integer));

    [...] dann zeigt er mir eine größe von 2 Bytes, also 16 Bit, an.
    Ich kenne Pascal nicht im Detail, aber ich kann mir vorstellen, dass der Compiler den 'integer' als 32bit interpretiert oder konvertiert (Zweierkomplement), diesen dann bitweise schiebt und dann als Parameter an die Funktion 'writeln' übergibt. Probier mal
    Code (pascal):
    writeln(i shr (14+16));

    Geändert von Brauni90 (18.08.2009 um 12:17 Uhr) Grund: Grammatikfehler

  3. #3
    Ich weiss nicht, welchen Compiler du verwendest, aber bei GNU Pascal kannst du die Grösse explizit angeben um auch sicher diese Grösse zu bekommen.
    Mich würde interessieren, was dann ausgegeben wird:
    Code (Pascal):
     
    i:Integer attribute (Size = 32);
    writeln(sizeof(i));
     

    Wobei du ja sizeof(Integer) verwendet hast, was aber auf das selber herauskommen sollte.

  4. #4
    Zitat Zitat von Brauni90 Beitrag anzeigen
    Ich kenne Pascal nicht im Detail, aber ich kann mir vorstellen, dass der Compiler den 'integer' als 32bit interpretiert oder konvertiert (Zweierkomplement), diesen dann bitweise schiebt und dann als Parameter an die Funktion 'writeln' übergibt. Probier mal
    Code (pascal):
    writeln(i shr (14+16));
    Dann spuckt er auch die 3 aus.
    Nur ich frage mich, wieso er dann Integer als 32 Bit-Wert interpretiert, wenn alle Funktionen, die zur Ermittlung der maximalen Größe dienen, alle 16 Bit ausspucken. Sizeof(integer) sagt 2 bytes und BitSizeof(integer) sagt 16 Bit.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •