variablen hexadezimale Werte zuweisen
-
Hoi,
Wir haben folgende Situation:
long int a; // long Integer a=1;Jetzt ist der Wert der Variable a 1.
Wenn ich jetzt der Variable einen Hexadezimalen Wert zuweise, wird dann berücksichtigt, ob diese signed oder unsigned ist?
Oder werden die Bits einfach gesetzt?Also kommt da raus
int a=0x3 //0..000011 unsigned a=0x3 //0...00011Ich hoffe ihr versteht was ich meine.....

mfg
-
Natürlich wird entsprechend umgewandelt. Im übrigen braucht die Bitdarstellung dich überhaupt nicht zu interessieren.
-
Oh doch, es interessiert mich imens.
Ich meine folgendes,
wenn ich einer Variable einen hexadezimalen wert zuweise, werden dann immer die gleichen Bits gesetzt oder wird signed und unsigned berücksichtig?Wenn ich z.B den 2 Bit in einem integer setzten will, kann ich dann einfach
int integer; integer=0x0 // alle Bits == 0 integer=0x2 // Bit 2 setzenOder anders, kann man die hexadezimale Schreibweise als direktes setzen von Bits ansehen und nicht als Zahl?
-
Nock schrieb:
Oh doch, es interessiert mich imens.
Selbst schuld. Wenn du wirklich damit rumspielen willst, solltest du dir die Bitoperatoren (vor allem & (Binäres UND) und | (Binäres ODER)) ansehen.
Ich meine folgendes, ...
Ich weiß, was du meinst.
wird signed und unsigned berücksichtig?
Ja. Steht auch in meinem letzten Post ... Aber signed integer sehen von 0 bis INT_MAX genauso aus wie unsigned integer (wobei ich nicht weiß, ob das im Standard festgelegt ist).
integer=0x2 // Bit 2 setzenDamit setzt du nicht nur das zweite Bit, sondern löschst auch alle anderen. Um nur das zweite Bit zu setzen müsstest du folgendes machen:
integer |= 0x2;Recht praktisch für soetwas kann auch folgende Funktion sein:
template <typename T> std::string to_binary (const T& p) { const size_t len = sizeof (T) * CHAR_BIT; std::string result (len, '0'); for (int i = 0; i < len; ++i) if (p & (1 << i)) result[len - (i + 1)] = '1'; return result; }Die gibt dir die Binärdarstellung eines beliebigen Objektes als std::string zurück.