Bit in Real

Tiak
2007-10-25
2007-10-26
  • Tiak - 2007-10-25

    Hallo

    Ich würde gerne ein par bit's in ein real Wort andreren aber so wir ich das hier probiert hat funktioniert es nicht. Hat da jemand ein ide wir i das machen kann.

    Reall.3 := orgrell.15;

     
  • foenig - 2007-10-25

    Erklär doch mal was Du genau machen willst.

    Ohne jetzt Code zu verwenden.

    Der Bitzugriff auf Real macht wenig sinn.

     
  • Tiak - 2007-10-25

    foenig hat geschrieben:
    Erklär doch mal was Du genau machen willst.
    Ohne jetzt Code zu verwenden.
    Der Bitzugriff auf Real macht wenig sinn.

    Ok probiere, ich muss den Exponenten und Si und SE anderen des wegen muss ich die bit manipulieren.

    Gruß Jesper

     
  • Tobi - 2007-10-26

    Ich vermute mal, dass Du eher ein DWORD verwenden solltest. Das Problem an Real ist, dass dies halt nciht unbeding Bit-für-Bit codiert ist. Will sagen, dadurch, dass Real ja kein ganzzahliger Wert ist, kannst du die Variable nicht als binärcodiert ansehen. Es gilt 10#18 = 16#13 =2#10010

    Verwende, wenn irgenwie möglich ein DWORD, dann geht das mit den Bits.

    (evtl. Mit Faktor 100 multiplizieren, um die Nachkommastellen zu simulieren)

    Wenn das nciht möglich ist, müsste man sich mal darum bemühen, den aktuellen Wert per Ceeling-Funktion ( Celing(8,6564) = 9) erst zu runden, dann das Bit bzw den entsprechenden Dezimalwert hinzuzählen/abziehen und dann das ganze zurücktransformieren. SEHR kompliziert und langsam.

    Apropos lamgsam: Real-Werte werden aufgrund Ihrer Präzision immer viel langsamer verarbeitet als ganzzahlige Werte.

    Gruß

     
  • Anonymous - 2007-10-26

    Originally created by: Bernhard Werner

    Hallo Jesper,

    ich hoffe du weisst, was du tust, aber bitte:

    ptdwordorg : POINTER TO DWORD;

    ptdwordl : POINTER TO DWORD;

    ptdwordorg := ADR(orgrell);

    ptdwordl := ADR(Reall);

    ptdwordl^.3 := ptdwordorg^.15;

    Bernhard

     
  • Tiak - 2007-10-26

    Bernhard Werner hat geschrieben:
    Hallo Jesper,
    ich hoffe du weisst, was du tust, aber bitte:
    ptdwordorg : POINTER TO DWORD;
    ptdwordl : POINTER TO DWORD;
    ptdwordorg := ADR(orgrell);
    ptdwordl := ADR(Reall);
    ptdwordl^.3 := ptdwordorg^.15;
    Bernhard

    Hallo Bernhard

    Ja das glaube ich danke für die info.

    Jesper

     

Log in to post a comment.