Vorzeichen ändern?
-
Hi ihrs!
Wie kann ich das bit für das vorzeichen in einem int umkehren ohne unary "-" zu benutzen?
-
y = 0-x
-
ich sagte ohne - :p
-
Da Coder! schrieb:
ich sagte ohne - :p
Nein, du sagtest ohne "unary -".
-
Da Coder! schrieb:
ich sagte ohne - :p
Du sagtest ohne unary "-". Das habe ich nicht verwendet.
-
Sorry mein Fehler!
Meinte sowohl unary- als auch subtraktion
-
y*=~0;
-
Bits umkehren kannst Du mit dem XOR operator ^. Aber das Umdrehen des Vorzeichenbits ist nicht das selbe, wie eine Subtraktion von 0.
-
Servus,
wie wäre es mit einer XOR-Verknüpfung? Hier musst du aber auf die Bitfolge deines Systemes achten (little oder big Endian)
Arbeitsweise:
1 xor 1 -> 0
0 xor 1 -> 1oder
0 xor 0 -> 0
1 xor 0 -> 1
-
Wie siehts mit dem 2er Komplement aus?
Gruß,
Andy
-
y = x * -1
-
Da Coder! schrieb:
Sorry mein Fehler!
Meinte sowohl unary- als auch subtraktion
dumm, wenn man fremdwörter verwedet, aber sie nicht kennt. :p
-
1. wozu brauchste das?
2. soll es für alle datentypen gültig sein?ansonsten würde es ja für float, int, ... reichen das erste bit zu ändern...
bb
-
y=x*cos(M_PI) :p
-
unskilled schrieb:
ansonsten würde es ja für float, int, ... reichen das erste bit zu ändern...
brauche es just 4 fun.
wie ändere ich denn das erste bit?
-
am einfachsten indem du nen bitset nimmst (und dann
[0].flip()
oder so)- ansonsten mit ^ und ~... oder du nimmst nen union was du dir deinem datentyp entsprechend aufbaust...bb
-
-
Hi Leuts!
Ich habe da mal etwas rumgespielt und folgendes ist dabei rausgekommen:
int x = -10; x &= ~(1 << 31);
Leider bekomme ich hier nicht eine positive Zahl "10" sondern "2147483638". Was habe ich falsch gemacht?
-
2 hoch 32 = 4294967296
4294967296 / 2 = 2147483648
2147483648 - 10 = 2147483638Du solltest mal nachlesen, wie die Minuszahlen aufgebaut sind. Die gehen nämlich danach rückwärts. So ist die folgende Bitzahl die -1 bei 32 Bit:
11111111 11111111 11111111 11111111
Grüssli
-
y=x*e^i*pi :p