Einzelnen Beitrag anzeigen

Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: Überlauf einer 4bit-Zahl

  Alt 15. Okt 2006, 11:51
Zitat von hanselmansel:
Wenn ich das Ganze Probiere und dabei TVierBitZahl durch Byte ersetze, dann zwigt er mit 254... 255... 0 an.

Meine Fragen sind nun:
  • Woran liegt das?
Ein Byte kann nicht mehr aufnehmen, als 8Bit. Dort ist es bereits bedingt, da auch die CPU nur mit 8Bit-Werten arbeitet und damit auch den Ueberlauf beachtet und entsprechende Flags setzt ect. (ansonsten wuerde eine Operation auf AL bspw. AH veraendern, was nicht sein darf.)

Zitat von hanselmansel:
  • Wie bekomme ich es hin, dass auch meine 4bit-Zahl so praktisch überläuft?
Wenn die Sache nicht funktioniert, muss ich wohl oder über immer mit Modulo arbeiten...
Die CPU kann nicht mit (!)3-Bit-Zahlen arbeiten (0..7 braucht nur 3 bit), d.h. es muesste der Compiler selbst gucken, ob mir die Operation soeben einen Ueberlauf beschert hat. Anscheinend macht er das nicht, warum, kA.
Einen Ueberlauf kann man (in deinem Fall) auch ohne Modulo verhindern/bzw. erkennen:
Delphi-Quellcode:
(zahl and $F8 > 0) //Boolscher Ausdruck, der einen Ueberlauf erkennt
zahl := zahl and $07;//Um einen Ueberlauf zu verhindern
Zumindest sollte es in der Theorie so funktionieren, ich habs nich ausprobiert.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat