Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Jan 2008
Versuch mal Folgendes:var Zahl: integer;
begin
Zahl := MAXINT; //011111111 11111111 11111111 11111111
ShowMessage(inttostr(Zahl));
Zahl := Zahl xor (1 shl 31); //11111111 11111111 11111111 11111111
ShowMessage(inttostr(Zahl));
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Jan 2008
Wenn bei 32-Bit-Werten die ersten 16 nur für das Vorzeichen verwendet würden, wäre das aber extrem ineffektiv.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Jan 2008
Logisch, die Information steht ja in einem einzigen Bit ;)
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Jan 2008
Ja eben, binär sind beide vollkommen gleich, erst durch das Casten in signed/unsigned ändern sie ggf. ihren Wert.
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Jan 2008
Bei mir bleibt das keineswegs auf -120, sondern wird durch Überlauf (eigentlich ja eher "Unterlauf") zu 4294967176.
Kleiner Test:ShowMessage(inttostr(DWord(-120)) + #13#10 + inttostr(MAXDWORD - 119));
Forum: Object-Pascal / Delphi-Language
Delphi
by DeddyH,
16. Jan 2008
Da wär ich ehrlich gesagt nie drauf gekommen (ist aber auch ausgesprochen dämlich implementiert).