Lowlevel

Lowlevel => Softwareentwicklung => Thema gestartet von: sebi2020 am 07. December 2009, 14:35

Titel: Bit gesetzt oder nicht?
Beitrag von: sebi2020 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
Titel: Re: Bit gesetzt oder nicht?
Beitrag von: Tobiking 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
Titel: Re: Bit gesetzt oder nicht?
Beitrag von: kevin 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: