Wie kann ich ein Bit aus einem Byte lesen?
-
Leider klappt es immer noch nicht - Aus dem unsigned char "229" (10100111) wird (10000...)
bool LeseBit(unsigned char &IStelleBit, unsigned long &IStelleByte, unsigned char *AQuelle) { if (IStelleBit > 7) { IStelleBit = 0; ++IStelleByte; } ++IStelleBit; return (AQuelle[IStelleByte-1] & (1 << IStelleBit-1)); }
-
Windalf schrieb:
ach und mir was erzählen wenn ich if(a-b) verwende...
hehe jetzt hab ich dich erwischt??
Schreibst du etwa
if(a-0) { stuff(); }
??
-
Schreibst du etwa
if(a-0) { stuff(); }nö ich schreibe nur if(a) und genauso schreibe ich auch if(a-b)
-
Windalf schrieb:
nö ich schreibe nur if(a)
Dann lies meinen Beitrag nochmal und spar dir dann die doofen kommentare
und genauso schreibe ich auch if(a-b)
zum glück muss ich deinen code nicht lesen - sowas ist ja krank
-
Dann lies meinen Beitrag nochmal und spar dir dann die doofen kommentare
also die begründung versteh ich jetzt nicht... (ok ein bisschen provozieren war natürlich mit bei...
)
aber in dem fall stand da return (x&y) !=0...
jetzt sagst du es ist blödinn !=0 zu verwenden weil das das gleiche ist wie
return x&y; weil der vergleich obs ungleich false ist keine änderung des boolschen ausdrucks bringt... (true!=false ist true und false!=false ist false und damit ist der vergleich überflüssig)
soweit lieg ich doch richtig oder?
wenn ja versteh ich nicht was an x&y als boolschen ausdruck zu interpretieren weniger verwerflich sein soll als a-b?
-
Weiß keiner bei meinem Problem weiter?
-
@pmw:
1 << 7 == 10000000 (binary)
10100111 & 10000000 == 10000000 ( != 0)
00100111 & 10000000 == 00000000 ( == 0)dein code sieht eigentlich gut aus....
-
Leider kommt aber anstatt "10100111" "10000000" raus? Wie kann das sein?
10100111 & (1 << 0) = 1 richtig
10100111 & (1 << 1) = 0 richtig
10100111 & (1 << 2) = 0 falsch (sollte 1 sein)
10100111 & (1 << 3) = 0 richtig
10100111 & (1 << 4) = 0 richtig
10100111 & (1 << 5) = 0 falsch (sollte 1 sein)
10100111 & (1 << 6) = 0 falsch (sollte 1 sein)
10100111 & (1 << 7) = 0 falsch (sollte 1 sein)
-
Zählt "IStelleByte" bei 1 los? Das ist ein bißchen unklar: bit geht von 0..7, byte von 1..N
-
Ja, zählt von 0-7 durch.
-
IStelleByte von 1 ??
-
Windalf schrieb:
wenn ja versteh ich nicht was an x&y als boolschen ausdruck zu interpretieren weniger verwerflich sein soll als a-b?
Echt nicht???
OMG
Hiermit höre ich auf mit dir über Stil zu reden.
nur ein kleiner Tip:
(x&y)!=0 entspricht in etwa (a-b)!=0
-
Echt nicht???
OMG
Hiermit höre ich auf mit dir über Stil zu redenlol
Ich hatte eigentlich gedacht das ich das Duell gegen dich verliere... mit einem unentschieden bin ich mehr als zufriedenP.S.: hoffentlich fühlt sich der -operator nicht jetzt von dir diskrimieniert, weil du dem & mehr Freiheiten einräumst...
-
Windalf schrieb:
P.S.: hoffentlich fühlt sich der -operator nicht jetzt von dir diskrimieniert, weil du dem & mehr Freiheiten einräumst...
tu ich nicht.
denk mal scharf nach warum. vielleicht kommst du ja drauf. nen tipp habe ich vorher schon gegeben.
-
btw: schreibst du statt
a<b auch immer (a-b)&(-1^1) ?woher kommt die aversion gegen lesbaren code und vergleichsoperatoren?
-
äh nein bei a<b nehm ich das auch so...mir gefällt alles was wenig ascii-zeichen brauch...
-
Windalf schrieb:
äh nein bei a<b nehm ich das auch so...mir gefällt alles was wenig ascii-zeichen brauch...
und auf das eine zeichen bei a!=b kommts dir drauf an?
-
Shade Of Mine schrieb:
das !=0 ist unnötig
Nicht unbedingt. Rein technisch gesehen zwar schon, aber der MSC 7.1 gibt mir dann ne hässliche Performance Warnung. Und falsch ist es schliesslich auch nicht. Ansonsten geb ich dir recht, und das ist mir die einzig bisher bekannte Ausnahme wo ich solch "unnötige" Sachen dazuschreibe.
-
nö da kommts mir nicht aufs zeichen an aber ich mag den !=operator nicht...
-
Windalf schrieb:
nö da kommts mir nicht aufs zeichen an aber ich mag den !=operator nicht...
*PLONG*
Ich kann wirklich nur hoffen, dass ich nie mit dir an einem Projekt arbeiten muss.