Ich kenne mich in Bascom nicht aus, sollte aber mit variablenvergleich funktionieren.
In C wäre das z.b. If(variable && (1«6)){......}
MfG Hannes
Hallo,
ich habe eine etwas komplizierte Farge die vielleicht doch nicht so schwer ist.
Ich möchte den Status einzelner Bits ausweren.
Leider liegen diese Bits zunächst nur in einer Binärzahl vor.
Nun möchte z.B. aus der Zahl 82 erkennen, ob das Bit 2hoch6 (64) enthalten ist. Wie müsste ich dazu in Bascom eine Formel schreiben?
Ich kenne mich in Bascom nicht aus, sollte aber mit variablenvergleich funktionieren.
In C wäre das z.b. If(variable && (1«6)){......}
MfG Hannes
Hallo Hannes,
gut möglich dass es so einfach ist. Leider kann ich mit C nichts anfangen
Hey,
mir ist nicht 100%ig klar worauf Du hinaus willst. Wenn es Dir einfach nur darum geht, möglichst unkompliziert einzelne Bits in einer Variablen abzufragen, bietet Bascom ja eine Punktnotation. Also so zB:
Hilft Dir das?Code:if variable.6 = 1 then ' wenn das siebte Bit der Variable variable gesetzt ist, tue irgendwas endif
Gruß
Malte
If Byte.6 = 1 Then
Machwas
End If
Gruß, Michael
Hi Düsentrieb,
das geht mit Bascom ganz einfach: Mit dem Namen Deiner Byte-Variablen, einem Punkt und einer Ziffer zwischen 0 und 7 kannst Du jedes einzelne der 8 Bits ansprechen. Du kannst die Bits so setzen, löschen, ihren Wert auf eine andere Bit-Variable übertragen, oder auch ganz einfach auf ihren Wert (1 oder 0) überprüfen.
Kleines Beispiel:
OderCode:Dim Zahl as Byte Zahl = .... If Zahl.6 = 1 then... else.... 'Überprüft das 6. Bit auf seinen Wert
War es das, was Du suchst?Code:Dim Zahl as Byte Dim MyBit as Bit Zahl = ... MyBit = Zahl.6 'Das Bit MyBit übernimmt den Wert des 6. Bits von Zahl
Gruß,
Daniel
Hallo an alle,
erst mal vielen Dank für eure Unterstützung.
Leider ist es das aber nicht gewesen.
Ich versuche es noch mal anders zu erklären.
Ich habe 8 Schalte die ich abfrage. Um den Zustand der 8 zu übertragen (CAN) wandle ich die 8 Zustande in eine Dezimalzahl um.
Beispiel:
S1 - S2 - S3 - S4 - S5 - S6 - S7 - S8
1 2 4 8 16 32 64 128
1 0 1 0 0 0 1 0 = 1+4+64 = 69
Nun möchte ich auswerten ob mein Schalter 7 gesetzt ist.
Dazu müssten alle übertragenen Werte ausgewerte werden die >63 und <128 sind
Ich glaube dass ich jetzt die Lösung beim Schreiben selbst gefunden habe
Hi,
also entweder verstehe ich Dich nicht, oder Du hast es noch nicht ganz verstanden Was Du machen willst müsste so gehen wie wir drei geschrieben haben. Wenn die Zustände Deiner Schalter in einem Byte stehen, dann kannst Du doch einfach abfragen ob das siebte Bit gesetzt ist, eben genau so wie oben dargestellt. Ob das Byte jetzt von einem Port kommt, über igrendeinen Bus oder aus einem Zufallsgenerator spielt dabei keine Rolle ...
Gruß
Malte
Hallo Malte,
jetzt habe ich aber wirklich auf dem Schlauch gestanden. Ihr habt alle Recht und ich habs jetzt kapiert
Danke euch!
[Pingelig]Vermutlich ist Dein Beispiel nur so - zum Verständnis - und Du kennst die übliche Bitanordnung von Dualzahlen. Dabei werden die Bits von rechts nach links numeriert, rechtes Bit ist das nullte, und Deine Zahlenfolge binär 1010 0010 hat den Wert dezimal 162... jetzt habe ich aber wirklich auf dem Schlauch gestanden. Ihr habt alle Recht und ich habs jetzt kapiert ...
(die Stellenwerte im Einzelnen 128 0 32 0 0 0 2 0). Erst das "spiegelbildliche" Byte binär 0100 0101 ergibt dann Deinen Wert dez 69.[/Pingelig]
Ciao sagt der JoeamBerg
Lesezeichen