Bits lesen/setzen
-
Was benutzt du den Zeiger?
Hascht du nix gelernt?
Zeiger nur so wenig wie möglich benutzen. Lieber Referenzen.
-
Hacker schrieb:
Was benutzt du den Zeiger?
Hascht du nix gelernt?
Zeiger nur so wenig wie möglich benutzen. Lieber Referenzen.Hier finde ich Zeiger auch besser.
-
wieso?
-
Habs fertig:
void setBit(unsigned char& Variable, int bitNum, bool newValue) { Variable = Variable ^ 1 << bitNum; }Test:
setBit(a, 5, 0);// a ist 57, ergebnis: 25 //[..] setBit(a, 5, 1);//a is wida 57
-
Bloß schrieb:
wieso?
Weil ich beim AUfruf
setBit(&a,5);am & sofort sehe, daß a verändert werden könnte.
Das hilft mir bei der Fehlersuche.
-
Ich bin für die Referenz, da es keinen Sinn macht, einen Nullzeiger zu übergeben.
-
Hmm volkard...
ich glaub sogar, es soll verändert werden - nicht nur weil die Funktion 'set' im Namen trägt
Ein hoch auf die transzendente Zahl!
-
Habs ausprobiert:
bool RegisterSet::getBit(int bitNum, u8 variable) { return variable & (1 << bitNum-1); } void RegisterSet::setBit(u8 *Variable, int bitNum, bool newValue) { *Variable = *Variable ^ newValue<<bitNum; }u8 test = 64; theSet->setBit(&test, 6, 1); // Sollte Bit 6 auf 1 setzen -> 00000010 -> 00000110 bool theBit = theSet->getBit(&test, 7); // test = 0 | theBit = 0Irgendwas läuft schief :S
-
Hacker schrieb:
Hmm volkard...
ich glaub sogar, es soll verändert werden - nicht nur weil die Funktion 'set' im Namen trägt
Ich erkenne es sogar bevor ich den Namen der Funktion überhaupt lese.
Und einen Zeiger zu übergeben heißt natürlich nicht, daß man 0 übergeben dürfte.
-
AHHH nein zähl von rechts, sowie der Computer und PI..
-
template <typename T> bool getbit(T& var, std::size_t bitnum) { return var & (1 << bitnum); } template <typename T> void setbit(T& var, std::size_t bitnum, bool value) { var = (var & ~(1 << bitnum)) | (value << bitnum); }Ungetestet.
Edit: Könnte nun eher stimmen.
-
Wollt ich auch mit Templates machen..

@PI
Wie kommst du auf diese Setter-Funktion? Kann nur falsch sein.
-
Ist mir auch gerade aufgefallen, ich korrigiere gerade.
-
Ämm guck grad
sa mal, wie heißt du eig. im IRC?Edit: is korrekt, meine art is aber cooler
so jetztemplate <class T> inline void setbit(T& var, std::size_t bitnum, bool value) { var = var ^ 1 << bitNum;; }Ne, is falsch - korrigier grad
Edit: Ne, bleiben wir bei PI's funktion.
-
Hacker schrieb:
@PI
Wie kommst du auf diese Setter-Funktion? Kann nur falsch sein.Wieso?
EDIT: Ach deswegen.

EDIT2: Hat für mich im ersten Moment auch Sinn gemacht. Ich war wohl zu lange auf der Arbeit.
-
Deins ist auch falsch, da kommt value im Ausdruck nicht vor

P.S.: Ich bin nicht sicher, ob ich will, dass du meinen IRC Nick kennst

-
314159265358979 schrieb:
Ich bin nicht sicher, ob ich will, dass du meinen IRC Nick kennst

Wie ist der denn?
Jetz komm- zier dich nich so. Hacker ist auch ganz brav, versprochen.Edit: @_matze: du hast 'nen Job?
-
Du reagierst ja nicht mal.

-
-
Das Problem besteht leider weiterhin, ich kriege es einfach nicht hin einzelne Bits sauber zu lesen.