Bit in einem Byte Setzen

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Mido
Beiträge: 18
Registriert: 30. Mai 2008 10:21

Bit in einem Byte Setzen

Beitrag von Mido »

hallo ,

ich hab ein klein Widget mit 8 Tasten (QPushButton ) und jetzt will ich jede Taste mit einem Bit einer "char" Variable verbinden und zwar :
drücke ich die 1. Taste wird das 1. Bit gesetzt
drücke ich die 2. Taste wird das 2. Bit gesetzt......... usw.

wie kann das programmieren?
ich wäre für eure Hilfe sehr dankbar!
Lord_Luncher
Beiträge: 11
Registriert: 28. Februar 2010 19:21

Beitrag von Lord_Luncher »

ich weiss nicht ob ich dich richtig verstanden habe aber eine Möglichkeit wäre:

Char val = 0;
Jeweils bei dem Klick auf ButtonX wobei X 0-7 ist:
val += 2^X; // Bit X auf 1 setzen
Und beim Release:
val -= 2^X; // Bit X auf 0 setzen

Achtung wenn ein bit 2 mal gesetzt wird dann ist zwar der bit wieder null aber der nachfolgende bit ist 1 wenn der vorher 0 war.
Um das zu verstehen musst du dich mit dem dualsystem auseinander gesetzt haben.

Ich hab keine ahnung ob das das ist was du suchst... dafür müsstes du dein Problem genauer beschreiben.
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag von TSS »

Ne andere Möglichkeit wären Bit-Operatoren:
siehe z.B. http://de.wikibooks.org/wiki/C%2B%2B-Pr ... pulationen

Wenn du die Bits beim 1. klicken auf 1 und beim 2. dann wieder auf 0 setzen willst, kannst du z.B. das Bitweise XOR (^) verwenden.

Wie es genau funktioniert solltest du im Internet ausführlich erklärt finden.
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag von kater »

Wenn ich mich nicht arg vertute geht das so

x |= (1 << 5); Setzte das 5. Bit in x auf 1

x &= ~(1 << 5); Setzt das 5. Bit in x auf 0


Siehe hier http://www.mikrocontroller.net/articles/Bitmanipulation
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag von TSS »

Das ist mit dem xor noch etwas einfacher:

x ^= 2^4 //5. Bit auf 1

x ^= 2^4 //5. Bit auf 0

So muss man auch nicht unterscheiden ob es schon auf 1 steht oder nicht.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

@TSS: Bist du dir da sicher?
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag von TSS »

Hm, die Schreibweise ist etwas krumm xD

Das 2^4 soll "2 hoch 4" heißen, das andere ^ ist der Bit-Operator.

Wenn x=0 ist:
x ^= 16 //5. Bit von rechts auf 1

Dann stimmt das was ich geschrieben habe aber.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

x |= 0x01
x &= ~0x01
Antworten