Fehler gesucht

Ich möchte fragen,ob hier irgendwo ein Fehler liegt:

#include<stdio.h>
#include<conio.h>

int main ()

{
int a= -25;
printf("Wert der Variable a wird als Positive Zahl behandelt:%u.",a);
getch();
return 0;
}



Ich will nähmlich die Zahl -25 als eine Positive Zahl Umwandeln aber sobald ich compiliere
zeigt mir Der Compiler ein ganze andere Zahl und zwar :4294967271
 
Zuletzt bearbeitet:
Das hat der Compiler richtig gemacht :)
Was erwartest du denn für eine Zahl ? Doch nicht etwa +25 ?

Wichtig (zum Nachlesen):
int - Wertebereich
unsignd int - Wertebereich
2er Komplement

PS: nach meinen Rechnungen scheint hier Einerkomplement angewandt zu sein...?

int Wertebereich: (2^32)/2 = 2147483648
unsigned int Wertebereich: 2^32 = 4294967296
Wenn man nun +25 durch das 2er Komplement in -25 umwandelt (binär) müsste deine Ausgabe eigentlich 4294967272 sein. Oder ich hab was bei der Rechnung übersehn :(

mfg ;-]
 
Zuletzt bearbeitet:
PS: nach meinen Rechnungen scheint hier Einerkomplement angewandt zu sein...?

int Wertebereich: (2^32)/2 = 2147483648
unsigned int Wertebereich: 2^32 = 4294967296
Wenn man nun +25 durch das 2er Komplement in -25 umwandelt (binär) müsste deine Ausgabe eigentlich 4294967272 sein. Oder ich hab was bei der Rechnung übersehn :(
Scheint zumindest so. Ich komme auf:
Code:
25d = 00000000000000000000000000011001b
Komplementbildung:
4294967270d = 11111111111111111111111111100110b
+1:
4294967271d = 11111111111111111111111111100111b
Also stimmt die Ausgabe schon. Wie kommst du auf 4294967272?
 
Hmm naja ich bin davon ausgegangen, dass wenn alle 32 Stellen 1 sind die maximale Zahl 2^32 ist. Und wenn man von dieser 24 (16+8) abzieht kommt man auf sowas.
Dann ist der Wertebereich wohl (2^32)-1 (grad bei wiki gesehn)

mfg
 
Zurück