bleicher: binärrepresentation "ausplitten"

Grüße,
nicht, dass es wichtig wäre, aber ich habe mir so eine rätsel gestellt
gegeben sind 4 "zeiger"/lämpchen
ich will die zum darstellen des binären zählens nutzen, sodas ich mit der eingabe der variable i aus [0,15] die einzelnen werte für L1 - L4 habe

ich dachte an binäre vergleiche der C-Sprache der form (i & 1) (i & 2) (i & 4) (i & 8) aber das ist etwas "unsauber"

wer kennt eine schönere lösung?
MFG
bleicher

--
__________________________-

FirefoxMyth
  1. Hi,

    wer kennt eine schönere lösung?

    geh die Lämpchen in einer Schleife durch und vergleiche mit dem Überlauf eines Bitshift nach rechts.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Grüße,

      geh die Lämpchen in einer Schleife durch und vergleiche mit dem Überlauf eines Bitshift nach rechts.

      danke ^^ einfach wie alles geniale
      warum habe ich daran bloß nicht gedacht xD
      MFG
      bleicher

      --
      __________________________-

      FirefoxMyth
      1. Hallo,

        geh die Lämpchen in einer Schleife durch und vergleiche mit dem Überlauf eines Bitshift nach rechts.

        das klingt hochinteressant! Könntet ihr mir ein Beispiel zeigen? Ich würde mich gerne etwas mit Bitoperationen beschäftigen. Könnte man das z.b. auch mit JavaScript machen? Oder eventuell ein PHP-Beispiel. Das wäre sehr nett!

        1. das klingt hochinteressant! Könntet ihr mir ein Beispiel zeigen? Ich würde mich gerne etwas mit Bitoperationen beschäftigen. Könnte man das z.b. auch mit JavaScript machen? Oder eventuell ein PHP-Beispiel. Das wäre sehr nett!

          Pseudocode:
          $x = 0001011b
          while ($x != 0) {
          if ($x[0] == 1) {
          lampe_an
          } else {
          lampe_aus
          }
          shift_right($x) //für die Abfrage des Überlaufs fällt mit jetzt kein Befehl ein, daher das if ($x[0] == 1)
          }

          Oder was meinst Du?

          • Schiebeoperationen über ein Bit entsprechen auch der Division oder Multiplikation (Überlauf beachten) mit 2.
          • mit and 0 kann man Bits löschen
          • mit or 1 kann man Bits setzen

          Mehr?

          1. das klingt hochinteressant! Könntet ihr mir ein Beispiel zeigen? Ich würde mich gerne etwas mit Bitoperationen beschäftigen. Könnte man das z.b. auch mit JavaScript machen? Oder eventuell ein PHP-Beispiel. Das wäre sehr nett!

            Pseudocode:
            $x = 0001011b
            while ($x != 0) {
            if ($x[0] == 1) {
            lampe_an
            } else {
            lampe_aus
            }
            shift_right($x) //für die Abfrage des Überlaufs fällt mit jetzt kein Befehl ein, daher das if ($x[0] == 1)
            }

            Oder was meinst Du?

            • Schiebeoperationen über ein Bit entsprechen auch der Division oder Multiplikation (Überlauf beachten) mit 2.
            • mit and 0 kann man Bits löschen
            • mit or 1 kann man Bits setzen

            Huch, das kapiere ich nicht. Was ist denn "Überlauf"?
            Was ist "0001011b"?
            Na ja, ist mir zu kompliziert, muss erstmal die Grundlagen dazu erlernen. vorher hat das keinen Sinn, schätze ich.

            Danke
            ein Pole

            1. Hi,

              • Schiebeoperationen über ein Bit entsprechen auch der Division oder Multiplikation (Überlauf beachten) mit 2.
              • mit and 0 kann man Bits löschen
              • mit or 1 kann man Bits setzen

              Huch, das kapiere ich nicht. Was ist denn "Überlauf"?

              das, was rechts raus fällt, wenn man die Bits verschiebt.

              Was ist "0001011b"?

              Das "b" sagt, dass es sich um Binärdaten handelt - also um Bits. Diese lauten "0001011".

              Na ja, ist mir zu kompliziert, muss erstmal die Grundlagen dazu erlernen. vorher hat das keinen Sinn, schätze ich.

              Da stimme ich Dir zu. Glücklicherweise sind die Grundlagen nicht so schwer ;-) und beginnen beim Zahlensystem. Hängen wir an Dezimalzahlen mal ein "d" und an Binärzahlen ein "b" an, dann haben wir:

              1d =    1b
              2d =   10b
              3d =   11b
              4d =  100b
              5d =  101b
              6d =  110b
              7d =  111b
              8d = 1000b

              usw., links können optionale Nullen angefügt werden (1b = 0001b). Jetzt beginnst Du, die Bits nach rechts zu schieben - was effektiv bedeutet, sie durch 2 zu teilen. Ein eventueller Rest dieser Division ist das, was oben als Überlauf bezeichnet wurde.

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
          2. Grüße,
            minimal praktischer fand ich shift nach rechts, der linksshift ist komplexer in der umsetzung,

            so werde ich das benutzen können

              
            for(i=0;i<16;i++){  
            			//  
            			if(i%2) str[3]=1; else str[3]=0;  
            			if(i>>1) str[2]=1; else str[2]=0;  
            			if(i>>2) str[1]=1; else str[1]=0;  
            			if(i>>3) str[0]=1; else str[0]=0;  
            			  
            			std::cout<<i<<" "<<str[0]<<str[1]<<str[2]<<str[3]<<endl;  
            	}  
            
            

            MFG
            bleicher

            --
            __________________________-

            FirefoxMyth
  2. Tach.

    ich will die zum darstellen des binären zählens nutzen, sodas ich mit der eingabe der variable i aus [0,15] die einzelnen werte für L1 - L4 habe

    ich dachte an binäre vergleiche der C-Sprache der form (i & 1) (i & 2) (i & 4) (i & 8) aber das ist etwas "unsauber"

    Was ist daran unsauber? Und wieso ist dieses Rumgeschiebe der Bits in Deinen Augen besser?

    --
    Always remember that you are unique. Just like everybody else.
    1. Hallo,

      ich will die zum darstellen des binären zählens nutzen, sodas ich mit der eingabe der variable i aus [0,15] die einzelnen werte für L1 - L4 habe

      ich dachte an binäre vergleiche der C-Sprache der form (i & 1) (i & 2) (i & 4) (i & 8) aber das ist etwas "unsauber"

      Was ist daran unsauber? Und wieso ist dieses Rumgeschiebe der Bits in Deinen Augen besser?

      Das kann ich zwar auch nicht nachvollziehen, aber ich nähme sprintf() mit %b (siehe auch Beispiel 5) ...
      Eine Vielzahl von gebräuchlichen Programmiersprachen bietet solche Ausgabefunktionen.

      Freundliche Grüße

      Vinzenz

      1. Grüße,
        bitverschibung ist schleifentauglich und anpassbar an die stellenzahl und eine binärausgabe als string wird mir nich helfen, weil ich die werte zum anstuern externen elemnte brauche ;)
        zudem kann c das anscheinend nicht auf anhieb und ich sowieso nicht so viele bibliotheken mitnehmen kann, auf die 32kb.
        MFG
        bleicher

        --
        __________________________-

        FirefoxMyth