Bitoperatoren
-
Hallo Leutz
Ich beschäftige mich gerate mit den Bitoperatoren und dem, was man alles machen kann. Dabei bin ich dazu gekommen, mir eine Funktion zu schreiben, die Dez-Zahlen in Bin-Zahlen umwandel. (Hab in der FAQ mir wohl das Thema schon angeeignet, wollte mir aber meine eigene Funktion schreiben). Funktioniert wunderbar.
string bin(int number) { string result; int bits=1; while((number >> bits) != 0) bits++; for(int z=bits-1; z>=0; z--) (number >> z)%2 == 0 ? result+="0" : result+="1"; return result; }
1. Ist das schöner Code, oder kann man da noch was verbessern.
2. Mir gefällt es nicht unbeding, das ich zweimal eine Bitverschiebung durchführen muss. Einmal beim herausfinden der notwendigen Bits und einmal zum Darstellen. Kann man das auf einmal verkürzen?3. Ich habe dann noch dies hier:
int x = 120; cout << x << " " << ~x << endl;
Warum bekomme ich als Ausgabe 120 und -121, anstatt 120 und -120.
Liegt es daran, das der Positive bereich von 0 - 120 geht und der negative bei -1 beginnt? Somit würde es sich mir erklären.4. und letztens
Kennt ihr Seiten, wo einige recht sinnvolle Beispiele mit der Arbeit solcher Operatoren aufgeführt werden oder Anwendungsbeispiele?Merci :p
-
zu 3)
schau dir das zweier komplement an, sprich: die darstellung negativer zahlen im computer.
-
1. oder 2.
http://www.engin.umd.umich.edu/CIS/course.des/cis400/cpp/binary.html4. kleines beispiel
typedef unsigned long u_long; //--------------------------------------------------------------------------- // Mittelwert zweier RGB-Farbtriple //--------------------------------------------------------------------------- inline u_long AverageColor(u_long a, u_long b) { return ((((a ^ b) & ((u_long) 0xfffefefe)) >> 1) + (a & b)); }