Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 15 von 15

Thema: Schieben von Bits

  1. #11
    Florian ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    25.07.2006
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo CrazyCat,

    erst mal danke für deine Mühe. So ganz versteh ich das noch nicht.
    Anfangswert:
    0001 0010
    wie würde es denn aussehen, wenn an der zweiten stelle von rechts eine 1 eingeschoben werden soll und nur ab der 1. stelle bis zur 4. stelle (die adresse 0.0 wird mitgezählt) um eins nach links geschoben werden soll also:

    0000 0110 die 1 in 0.4 wird rausgeschoben.

    Gruß Florian

  2. #12
    Registriert seit
    13.09.2005
    Beiträge
    633
    Danke
    8
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Es sollen also auch Zwischenbereiche (z.B. Bit 2 bis Bit 6) geschoben werden, wobei kein Übertrag in das nächste Bit (z.B. Bit 7) erfolgt.

    Verstehe ich das richtig?

  3. #13
    Registriert seit
    02.02.2006
    Ort
    Hessen
    Beiträge
    429
    Danke
    16
    Erhielt 28 Danke für 22 Beiträge

    Standard

    Hallo,

    um einzelne Bits zu schieben, gibt es bei S7 die Zuweisung z.B.:

    U M0.5
    = M0.6
    U M0.4
    = M0.5
    U M0.3
    = M0.4
    U M0.2
    = M0.3

    Dieses Beispiel schiebt 4 einzelne Bits bei jedem Aufruf gnadenlos nach links.
    mfG Werner
    Hoch lebe die Suchfunktion!
    Zitieren Zitieren Schieben einzelner Bits  

  4. #14
    Registriert seit
    13.09.2005
    Beiträge
    633
    Danke
    8
    Erhielt 8 Danke für 6 Beiträge

    Standard

    Nur ist es nicht sehr dynamisch, wenn ich nur 3 Bits schieben will, muss ich das ganze Programm ändern oder alle Möglichkeiten abdecken (und das sind sehr viele)

  5. #15
    Registriert seit
    13.09.2005
    Beiträge
    633
    Danke
    8
    Erhielt 8 Danke für 6 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zuerst alles mit 2 multiplizieren:

    0001 0010 (1 * 2
    = 0010 0100 (36)

    Nun eine Bitmaske durch Rechnen von 2^(Endposition + 1) - 1 - 2^(Endposition - 1) erzeugen
    -> 2^5 - 1 - 2^0 = 30

    Die Maske mit dem Ergebnis verknüpfen (UND)

    0010 0100 (36)
    &0001 1110 (30)
    =0000 0100 (4)

    Nun die Maske invertieren durch ein XOR

    0001 1110 (30)
    XOR 1111 1111
    = 1110 0001

    Mit diesem Ergebnis den Urpsrungswert durch ein UND filtern

    0001 0010 (1
    & 1110 0001
    = 0000 0000 (0)

    Nun die Ergebnisse der Filterungen einfach durch ein OR miteinander verknüpfen und man erhält schon beinahe das Endergebnis

    0000 0000 (0)
    OR 0000 0100 (4)
    = 0000 0100


    Zum Einschieben eines Bits einfach noch 2^Einschiebeposition zum Ergebnis addieren. (Hier 2^1 = 2)

    0000 0100 (4)
    +0000 0010 (2)
    =0000 0110 (6)

    Das war's!

Ähnliche Themen

  1. Uhrzeit in DB schieben
    Von bastler im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 17.04.2011, 12:06
  2. Bestimmte Bits und eine Real an mehrere FB schieben
    Von trinkiwinki im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 30.10.2007, 12:08
  3. Doppelwörter Schieben
    Von Waelder im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 08.03.2007, 16:35
  4. Daten im DB schieben
    Von otto99 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 01.03.2006, 11:13
  5. Bits in temporäres Byte mappen und gesetzte Bits zählen
    Von yetibrain im Forum PC- und Netzwerktechnik
    Antworten: 3
    Letzter Beitrag: 19.02.2005, 16:31

Lesezeichen

Berechtigungen

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