Könnte jemand die Begründung für diese Ergebnisse bitte nochmal wiederholen?
Danke!
166 ~ 10 = 166
-166 ~ 10 = -166
166 ~-10 = 4
-166 ~-10 = -4
Fehlt da nicht der Divisionsoperator?
er meinte bestimmt:
166 % ~10 = 166
-166 % ~10 = -166
166 % ~-10 = 4
-166 % ~-10 = -4
stimmt, das ist modulo, sorry
Könnte jemand die Begründung für diese Ergebnisse bitte nochmal wiederholen?
Laut Herrn Lehmann bedeutet ~ nicht 1-Komplement, sondern bitweises NOT. Sprich die Zahl wird nicht negativ, sondern sehr groß, und a mod b = a für 0 < a < b.
Laut Herrn Lehmann bedeutet ~ nicht 1-Komplement, sondern bitweises NOT.
Öhm, ist das nicht das gleiche? [img]
http://www.fb18.de/gfx/2.gif[/img]
an sich ja, sind die gleichen bitfolgen. so ganz verstanden habe ich das auch nicht, hat wahrscheinlich damit zu tun, wie der befehl die bitfolge interpretiert. als 1-komplement (negativ) oder als positive bzw. vorzeichenlose zahl. hier eben wohl letzteres.
Der Begriff "Komplement" ist überladen (sprich: er hat mehrere Bedeutungen).
Bedeutung 1:
"Das Komplement bilden" bedeutet, eine Operation auf den Bits auszuführen. Beim Einerkomplement alle Bits umdrehen. Beim Zweierkomplement alle Bits umdrehen und anschliessend 1 addieren.
Bedeutung 2:
"Eine Zahl liegt im Komplement vor" bedeutet, ein Bitmuster vorzeichenbehaftet zu interpretieren. Positive Zahlen haben im MSB eine 0, negative eine 1. Der Betrag einer positiven Zahl ergibt sich direkt aus den Bits, der Betrag einer negativen Zahl ist nicht direkt ersichtlich. Um ihn zu errechnen, bildet man das entsprechende Komplement.
~10 = 11111111111111111111111111110101 = 4294967285
166 % 4294967285 = 166
Es wird also als unsigned interpretiert bei % operation