![]() |
Überlauf einer 4bit-Zahl
Hallo,
ich wollte mir gerade einen Zahltyp definieren, der nur die Werte 0 bis 7 annehmen kann.
Delphi-Quellcode:
Wenn ich nun aber einer Variable dieses Typs den Wert 7 zuweise, und 1 addiere zeigt mir
Type
TVierBitZahl = 0..7;
Delphi-Quellcode:
die Meldung den Wert 8 an. Wenn ich das Ganze Probiere und dabei TVierBitZahl durch Byte ersetze, dann zwigt er mit 254... 255... 0 an.
var
eineZahl :TVierBitZahl; procedure TForm1.Button2Click(Sender: TObject); begin eineZahl := eineZahl + 1; ShowMessage(IntToStr(eineZahl)); end; Meine Fragen sind nun:
Wenn die Sache nicht funktioniert, muss ich wohl oder über immer mit Modulo arbeiten... :? MfG, hanselmansel |
Re: Überlauf einer 4bit-Zahl
Hallo,
Zitat:
Zitat:
Zitat:
Das von dir geschätzte Überlaufverhalten resultiert aus der direkten Abbildung eines internen Datentyps auf einen vom Prozessor unterstützten Datentyp (nativer Datentyp). Sobald du einen Subtyp definierst, musst du mit dem modulo-Operator arbeiten um den gleichen Effekt zu erzielen. Bedenke dabei, dass der Effekt auch bei nativen Datentypen nur bei abgeschalteter Bereichsüberprüfung möglich ist. Grüße vom marabu |
Re: Überlauf einer 4bit-Zahl
Zitat:
Zitat:
Einen Ueberlauf kann man (in deinem Fall) auch ohne Modulo verhindern/bzw. erkennen:
Delphi-Quellcode:
Zumindest sollte es in der Theorie so funktionieren, ich habs nich ausprobiert.
(zahl and $F8 > 0) //Boolscher Ausdruck, der einen Ueberlauf erkennt
zahl := zahl and $07;//Um einen Ueberlauf zu verhindern greetz Mike |
Re: Überlauf einer 4bit-Zahl
Dankeschön. :dp:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz