Bit verschieben in C

#887882
Lesenswert?

Hallo
Ich möchte mit einer Bitmaske von 01111111 mit einem Byte Array 
überprüfen wo sich eine 0 befindet. Ich überprüfe die Bytes mit einer 
Oder Funktion weiß aber nicht ob das funktioniert. Ich weiß auch nicht 
wie ich einzelne Bits in einem Byte durchschieben kann.

mfg
#887910
Lesenswert?

ja da stehts ja nur wie man portsbits verschiebt
was ist aber mit bytes
ich ja jetzt zum bsp ein byte a=0b10101111;
und eine bitmaske mit byte maske=0b0111111;

dann frag ich ab mit if((a | mask) == mask) ab ob sich an der stelle 
eine 0 befindet
jetzt weiß ich aber nicht wie ich die 0 weiter schiebe
#888517
Lesenswert?

Ob 1 oder 0 ist egal. Geschoben wird unabhängig vom Inhalt
1
  unsigned char a = 0b10101111;
2
  a >> 3;
Dann steht in a 0b00010101
Achtung bei "signed", wenn das erste bit eine "1" ist wird ne 1 
nachgeschoben und keine 0. Aus
1
  char a = 0b10101111;
2
  a >> 3;
wird dann 0b11110101.
Gast #890331
Lesenswert?

So hab jetzt noch ein anderes Problem.
Ich brauch jetzt statt einem byte array ein char array.

Kann ich bei einem char array auch die bitmanipulation anwenden?

z.B:

char a=0b01010101;
a |=(1<<5);

Geht das?


mfg
#890824
Lesenswert?

Erkläre mit mal den Unterschied zwischen byte und char! Für mich ist es 
beides 0x00-0xFF, also 8 Bit.

>char a=0b01010101;
Sieht mir nicht wie ein Array aus.
1
char a[]={0b01010101, 0b011001100, 0b11110000};
Das ist ein Array, aber auch da gehts natürlich.


>a |=(1<<5);

>Geht das?
Probiers doch aus, das kompilieren dauert doch nur ein paar ms.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren