Das zeichen %u
-
Hallo.
Ich will mit dem %u zeichen das die negative Zahl in ein Positive Zahl ausgegeben wird aber hoffnungslos hundertmal im compiler kompiliert und wiederholt und nachgedacht und bin kein schritt weitergekommen.kann mi bitte vielleicht jemand dabei helfen:
#include <stdio.h> int main() { int a = -12345; printf ("Wert der Variable a als positive Zahl behandelt: %u.", a); return 0; }
Anstatt das 12345 als Zahl kommt kommt ein ganz andere Zahl
mfg soufian
-
das ist logisch und hat mit dem binären aufbau der zahl zu tun.
wenn die zahl mit vorzeichen interpretiert wird, gibt das letzte bit das vorzeichen
an. das ist im falle einer negativen zahl gesetzt. so auch im beispiel.wenn du die zahl jetzt als unsigned interpretierst, zählt das bit als stelle
und zwar mit dem wert 2^(anzahl int-bits - 1). meist ist int 32 bit groß
d.h. im bereich von 214748xxxxohne umwandeln in eine positive zahl wird sich das ergebnis auch nicht ändern.
-
abs() verwenden.
-
#include <stdio.h> int main() { int a = -12345; printf ("Wert der Variable a als positive Zahl behandelt: %d.\n", -a); return 0; }
-
helferlein schrieb:
das ist logisch und hat mit dem binären aufbau der zahl zu tun.
wenn die zahl mit vorzeichen interpretiert wird, gibt das letzte bit das vorzeichen
an. das ist im falle einer negativen zahl gesetzt. so auch im beispiel.wenn du die zahl jetzt als unsigned interpretierst, zählt das bit als stelle
und zwar mit dem wert 2^(anzahl int-bits - 1). meist ist int 32 bit groß
d.h. im bereich von 214748xxxxohne umwandeln in eine positive zahl wird sich das ergebnis auch nicht ändern.
Soweit richtig, der Logik halber spricht man aber vom ersten Bit:
1001...
-
Spricht "man"?
-
Korhil schrieb:
Soweit richtig, der Logik halber spricht man aber vom ersten Bit:
1001...und der einfachheit halber nennt man 2^0 das erste bit.