Autor Thema: Bit gesetzt oder nicht?  (Gelesen 6930 mal)

sebi2020

  • Beiträge: 130
    • Profil anzeigen
    • Infortus OS
Gespeichert
« am: 07. December 2009, 14:35 »
Wie kann man eigentlich in C & Assembler feststellen, ob ein bestimmtes Bit in nem Byte gesetzt ist?

Also wenn ich z.B. 0100 0111 habe. Wie kann ich in C UND Assembler rausfinden, ob z.B. Bit 6 gesetzt ist, oder nicht?

Liebe Grüße
Sebi2020
Please press any-key...
Verflucht wo ist any-key? hier? ach Mist, das war Escape...

Tobiking

  • Beiträge: 24
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 07. December 2009, 14:57 »
Du könntest dir eine Variable erstellen bei der nur das eine Bit gesetzt ist und damit verunden. Ist das bit nicht gesetzt kommt 0 (false) raus. Ist das bit gesetzt kommt ein Wert ungleich 0 (true) raus.

Beispiel:
int zahl = ...; // Dein Wert
int bit = 1 << n // Nur das n-te Bit ist 1, der Rest ist 0
if(zahl & bit)
  // Bit ist gesetzt
else
  // Bit ist nicht gesetzt

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 07. December 2009, 15:02 »
Also wenn ich z.B. 0100 0111 habe. Wie kann ich in C UND Assembler rausfinden, ob z.B. Bit 6 gesetzt ist, oder nicht?
In C: if (x & (1 << 6)) { ... }In Assembler: test %eax, $0x40
jz foo
...
foo:
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

 

Einloggen