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

Ergebnis 1 bis 5 von 5

Thema: bitmuster verbreitern/schmälen (vorlauf/nachlauf)

  1. #1
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallo,

    wenn ich zb folgendes bitmuster habe:

    Code:
    00000000011110000000001111110000
    die bereiche in denen eine 1 steht will ich zb um 2 verbreitern,
    also so:

    Code:
    00000001111111100000111111111100
    dann kann ich das ja machen in dem ich das dw in einer
    schleife immer um eine stelle nach links bzw. nach rechts schiebe, und akku1 mit akku2 verodere, aber wenn ich den bereich stark vergrößern will hab ich ne schleife die sehr viel zykluszeit frisst...

    deshalb wollte ich mal die mathefreaks hier fragen ob das nicht einfacher oder eleganter geht. darf auch kompliziert aussehen, wie das programm für andere nachvollziehbar ist ist nicht so wichtig. aber einspaarungen in der zykluszeit schon...

    (ich muss in der schleife mehrere dw verodern.
    Zitieren Zitieren bitmuster verbreitern/schmälen (vorlauf/nachlauf)  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Rezept (kein Code):

    1. Du schiebst das Wort (oder Doppelwort, hab nich gezählt) rechts oder links, Richtung egal, da du ja symmetrisch "verbreitern" willst.
    2. Nach jedem Schiebeschritt kontrollierst du die oder-Verknüpfung des 1.,2. und 3. Bits., z.B. bei Rechtsschieben x.0,x.1,x.2
    Ergibt das 1, kopierst Du eine 1 in die höchste Stelle eines Ergebnisdatenworts, sonst eine 0, d.h. Du kopierst das Ergenis des Oders dorthin.
    Beispiel:
    U M4.0
    0 M4.1
    0 M4.2
    =M8.15
    3. Du schiebst das Ergebnis-Wort (oder Doppelwort) rechts oder links, Richtung wie beim Ausgangswort.
    4. Du wiederholst 1-3 sooft, wie die Worte Bits haben.

  3. #3
    Avatar von Markus
    Markus ist offline Administrator
    Themenstarter
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    danke,

    aber:

    1. ich habs nicht wirklich kappiert (was ist m8.15)
    2. die lösung die ich gepostet habe scheint da doch eifacher zu sein.

    im prinzip will ich von der schleife wegkommen...

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    M8.15 sollte M9.7 heissen, ist einfach der höchste Merker
    bei 16-bit, Wenn das Ergebnis z.B.im MW8 stünde.

    Ok, geht auch einfacher, sorry:

    Originalwort mit links geschobener und rechts geschobener Kopie verodern, verbreitert die Einsen rechts und links um 1. Für Breite 2 2 mal machen.

    Wenn Du sicher sein kannst, dass das Muster immer mindestens
    2 Einsen nebeneinader aufweist, müsste man auch gleich um 2 schieben können:
    000011000
    001100000
    000000110
    --------- oder
    001111110

    Wo steht deine Lösung?

  5. #5
    Avatar von Markus
    Markus ist offline Administrator
    Themenstarter
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.231
    Erhielt 1.101 Danke für 527 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    die lösung steht doch in meinem ersten post.
    dann kann ich das ja machen in dem ich das dw in einer
    schleife immer um eine stelle nach links bzw. nach rechts schiebe, und akku1 mit akku2 verodere, aber wenn ich den bereich stark vergrößern will hab ich ne schleife die sehr viel zykluszeit frisst...
    ne ich darf immer nur um eine stelle schieben, ist verschieden.

    hab aber deine lösung nochmal angeschaut, habs jetzt verstanden.

    es handelt sich dabei um dws d.h. bei deiner lösung würde die schleife jedesmal 32 umläufe haben.

    bei mir nur soviele wie ich das muster verbreitern will.

    prinzipiell würden beide lösungen funktionieren, und deine gefällt mir auch ganz gut weil die zykluszeit (schleifendurchläufe) stabil wäre.

    bei mir wäre sie von der verbreiterung abhängig...
    und sobald ich um mehr wie 32 verbreitere hätte ich mehr durchläufe...

    (das bitmuster ist 7 dw breit)


    aber eigentlich wollte ich weg von den schleifen, und dachte das es irgeneine rafinierte formel oder sowas gibt...

    trotzdem danke, hat mich auf einen etwas anderen weg gebracht...[/code]

Ähnliche Themen

  1. Aus Hex Zahl wieder Bitmuster machen
    Von Deimos0815 im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 17.08.2011, 10:34
  2. Bitmuster Puzzel
    Von doelckenbeck im Forum Programmierstrategien
    Antworten: 10
    Letzter Beitrag: 09.08.2010, 10:19
  3. Bitmuster
    Von AdrianS im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 06.10.2007, 15:23

Lesezeichen

Berechtigungen

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