-         

Ergebnis 1 bis 5 von 5

Thema: Nibble einer Zahl erzeugen

  1. #1
    Murus
    Gast

    Nibble einer Zahl erzeugen

    Anzeige

    Hallo zusammen,

    ich möchte von einer Dezimalzahl <=9 die Binärdarstellung erzeugen.
    z.B. für eine 3 ein "0011"
    Muss ich dafür die als Byte gespeicherte 9 zuerst binär als String abspeichern und die einzelnen Bits per mid auslesen? (ich brauch die Bits einzeln).
    Oder gibt es da eine einfachere Möglichkeit? Sind nämlich schon ein paar Variablen, die so aufbereitet werden müssen...

  2. #2
    Hallo,

    vielleicht hilft dir ja folgendes weiter:

    Code:
    void bin_prnt_byte(int x)
    {
      int n;
      for(n=0; n<8; n++)
      {
        if((x & 0x80) !=0)
          printf("1");
        else
          printf("0");
    
        if (n==3) {
          printf(" "); /* insert a space between nybbles */
        }
        x = x<<1;
      }
    }
    mfg
    Sebastian

  3. #3
    Murus
    Gast
    Stichwort: Bascom-Forum

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.02.2005
    Ort
    NRW-Bergisches Land
    Beiträge
    311
    meines Wissens nach geht es bei Bascom auch sehr komfortabel mit:
    set mybyte.1
    reset mybyte.4
    ......
    oder aber mybyte.4 = 0
    mybyte.2 = 1

    .....
    ? mybyte

    mybyte = 255
    ? mybyte.3 (sollte 1 sein)

    Sonst ist es auch möglich einzelne Bits im Byte mit einer AND bzw. OR Operation zu setzten oder zu reseten.
    Also mybyte = mybyte AND 127
    Die genauen Byte Werte für die einzelne Bits habe ich aber grad nicht zur Hand.
    Es geht aber mit dem oberen Beispiel einfacher und überschaubarer.
    Gruß RePi!


    *** Holzhacken ist deshalb so beliebt, weil man bei dieser Tätigkeit den Erfolg sofort sieht. ***
    *** (Albert Einstein) ***

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    1, 2, 4, 8, 16, 32, 64, 128
    addiert gibt das 255

    oder gleich den Binärwert verwenden

    x_byte = &B01010101
    x_byte=x_byte AND &B00001111

    daraus folgt:
    x_byte = 0000 0101
    Vor den Erfolg haben die Götter den Schweiß gesetzt

Berechtigungen

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