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
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
also wenn du mit 2 multiplizierst oder durch 2 dividierst, kannst du eine 1 "verschieben", falls dir das weiterhilft. also von links nach rechts schieben /2 von rechts nach links schieben *2
ich will halt eine 0 verschieben ist das überhaupt möglich oder muss ich ne 1 verschieben und invertieren?
hab noch nie versucht ne 0 zu verschieben, wenn du aber mit if((a & mask)==mask) abfragst, sollte es auch funktionieren. damit findest du dann halt die 1 anstatt die 0.
jetzt hab ich die Schiebeoperatoren verstanden da kann ich eh immer ne 1 nachschieben und nach 8 mal schieben setz ich das byte neu damit müsste die 0 immer weiter verschoben werden
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.
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
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.