-
        

Ergebnis 1 bis 8 von 8

Thema: einzelne bits in bytes speichern

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    15.12.2005
    Ort
    Bayern
    Alter
    34
    Beiträge
    86

    einzelne bits in bytes speichern

    Anzeige

    hi @all,
    ich hab mal eine kleine anfängerfrage:
    ich hab eine variable in der ich einen hexwert speicher. nemen wir mal als beispiel H81. wenn ich das jetzt das in binär umrechne ist das 10000001.
    wie kann ich jetzt die einzelen bits in einzelen variabel speichen also zb
    a=1
    b=0
    c=0
    ...
    h=1

    bzw gibt es eine befehl mit ich die einzelen bits abfragen kan wie zb
    variable =befehl(byte,stelle des bytes 1-8 )

    gruss
    markus

  2. #2
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    Mit logischen Operationen AND und OR.

    Ich schreib's mal im Codefenster da ist es besser Darzustellen:

    Code:
    Wert = &B00000000 
    B = 1
    
    print "Vorher:"
    print bin(Wert)
    print bin(B)
    
    if B = 1 then
       Wert = Wert OR &B00000001  
    else
       Wert = Wert AND &B11111110
    end if
    
    print "Nachher:"
    print bin(Wert)
    
    END 'Program
    
    
    Tabellarisches Beispiel:
    
    
        01010101   |     01010100
    AND 11111110   |  OR 00000001
        --------   |     --------
     =  01010100   |   = 01010101
    
    Oder anders (nur ein Bit betrachtet):
    
     1 AND 1 = 1   |   1  OR  1 = 1
     1 AND 0 = 0   |   1  OR  0 = 1
     0 AND 1 = 0   |   0  OR  1 = 1
     0 AND 0 = 0   |   0  OR  0 = 0
    Bit0 setzen:
    Mit OR muss nur eine Bedingung erfüllt sein.
    also Egal ob das Bit0 gesetzt ist oder nicht
    mit "Wert OR 1" (00000001) wird es auf jeden Fall gesetzt.

    Bit0 löschen:
    Mit AND wird das Bit nur gesetzt wenn beide eine 1 haben.
    mit "Wert AND 254" (11111110) wird auf jeden Fall das Bit0 gelöscht und die anderen bleiben so wie Sie sind.

    Wie Du siehst, kannst Du logische Operationen auch mit beliebigen Zahlen duchführen.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    variable =befehl(byte,stelle des bytes 1-8 ) ==>
    byte = &H81
    nr = 0 - 7
    variable = byte.nr ' oder direkt

    variable1 = byte.0
    variable2 = byte.1
    variable3 = byte.2
    variable4 = byte.3
    variable5 = byte.4
    variable6 = byte.5
    variable7 = byte.6
    variable8 = byte.7
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  4. #4
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    Auch schön,
    wusste ich noch nicht.

    Aber Byte (Schlüsselwort) als Variablennamen verwenden (böses Faul)
    auch als Beispiel.

    Lieber Bwert verwenden.

    Wieder was gelernt
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    15.12.2005
    Ort
    Bayern
    Alter
    34
    Beiträge
    86
    @PicNick

    Danke hat super funktioniert.


    Dann noch eine kleine Frage zur digitaltechnick und zwar:

    wenn daten über einen serielen bus übertragen werden werden die bits von einen byte übertragen wie man sie aufschreibt also von links nach rechts oder genau andersrum?

    gruss
    markus

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Byte (Schlüsselwort) als Variablennamen verwenden (böses Faul)
    Gut, ich bin für auspeitschen, dann geht's aber wieder, gelle ?
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.11.2005
    Beiträge
    321
    "Aber Byte (Schlüsselwort) als Variablennamen verwenden (böses Faul)
    auch als Beispiel."

    versteh ich nicht...warum "böses faul"? es gibt dafür keine regeln.
    jeder macht es so wie es für einen passt.

    ausserdem schreibst du bei den anderen verschiedenen variablen auch keine kennung davor/hinter.

    Castle

  8. #8
    Erfahrener Benutzer Roboter Genie Avatar von darwin.nuernberg
    Registriert seit
    08.08.2004
    Ort
    A, A
    Alter
    53
    Beiträge
    1.305
    Blog-Einträge
    1
    Zitat Zitat von super_castle
    "Aber Byte (Schlüsselwort) als Variablennamen verwenden (böses Faul)
    auch als Beispiel."

    versteh ich nicht...warum "böses faul"? es gibt dafür keine regeln.
    jeder macht es so wie es für einen passt.

    ausserdem schreibst du bei den anderen verschiedenen variablen auch keine kennung davor/hinter.

    Castle
    Na zum einen wird der Compiler diesen namen "normalerwiese" nicht akzepierten,
    dann hat man schon einen Fehler,
    wenn man sich nicht auskennt und schön brav alles so abtippt wie es dasteht.

    Und falls es der Compiler zunächst ignoriert,
    irgendwann wird ein Fehler entstehen.

    Und dann such mal. Selbst fabrizierte Fehler sind gnadenlos.

    Klar kann jeder so wie er will,
    aber es sind nun mal doch so gewisse Regeln die sich im Laufe der Zeit (nicht ohne Grund) etabliert haben.

    Nur ob man sich daran hält ist wieder was anderes.
    In diesem speziellen Fall ist es sogar eine Regel an die man sich halten muss dies ist eine SYNTAX Verletztung

    Das macht dann auch den Code leserlicher.

    Eine Variable B_grün kann eigentlich nir ein Byte haben
    eine Variable I_winkel kann dann logischerweise nur einen Integer
    eine Vaiable Str_Wort einen String usw.


    Also wenn man sich daran gewöhnt und größere Programme schreibt bleibts übersichtlicher.

    In C kann ich so zeimlich alles machen auch einer Byte eine Integer zuweisen. Blos nicht wundern was dann passieren kann.........

    In Basic (Bascom) wird wenigstens schon vorher (meistens jedenfalls) gemeckert.
    Gruss
    Darwin (meine Projekte sind auf meiner Pinnwand zu finden)

Berechtigungen

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