Autor Beitrag
Sven
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Do 16.01.03 14:22 
Ich habe ein Problem '\07' zu interpretieren. Was bedeutet es?

ausblenden Quelltext
1:
flag2=aden->dim.dimflag & '\07';					


dim.dimflag ist ein Float-Wert. Und das ganze ist eine Und-Verknüpfung, soweit ist mir das auch klar. Nur was bedeutet '\07'?

_________________
MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
Eisenherz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Do 16.01.03 15:50 
Die einfachen Hochkommas sagen uns, dass es sich um ein Zeichen handelt. Der Backslash hat eine Sonderbedeutung, nämlich, dass die Zeichen dahinter bestimmen um welches Zeichen es sich handelt. Da nach dem Backslash zwei Zahlen kommen, handelt es sich um eine Oktalzahl, in unserm Fall also um die Sieben.
Es handelt sich also um das Zeichen mit dem ASCII-Wert 7. Da Zeichen in C/C++ wie Integerwerte behandelt werden, haben wir hier einfach nur eine sehr komplizierte Schreibweise für die Zahl Sieben.
Ich vermute, dass der Programmierer es "oktal" geschrieben hat, um deutlich werden zu lassen, dass die Bits 0, 1 und 2 gesetzt sind.
Die ganze Zeile dient also dem Zweck bei dem Wert von dimflag nur die ersten drei Bits übrig zu lassen.

Dass es sich bei dimfalg um einen Float handelt bezweifle ich, da sich sonst die Zeile nicht übersetzen ließe. Dimflag ist mit Sicherheit ein Integer oder etwas, was sich in einen Integer casten lässt.

_________________
aloa Eisenherz
Sven Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 314


D6 Ent, K3 Pro (patched)
BeitragVerfasst: Fr 17.01.03 08:34 
Du hast recht, Fehler von mir, unter Delphi ist es ein Byte. Deine Erklärung klingt einleuchtend, was mich nur wundert ist, daß eigentlich die Bits 6,7 und 8 ausgeblendet werden sollten. Aber Danke für Deinen Tip.

_________________
MDK 9.1, Kernel 2.4.21, KDE 3.1 Kylix 3 Pro (patched), nutze aber auch Windows
Eisenherz
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Fr 17.01.03 14:39 
Vielleicht hätte ich besser schreiben sollen, dass nur die drei niederwertigsten Bits übrig bleiben sollen. Wenn man ein Byte binär hinschreibt und von links zu Zahlen anfängt, dann sind das die Bits 6, 7 und 8. Bei einem Shortint wären das dann die Bits 14, 15 und 16.
Das niederwertigste Bit (2 ^ 0) steht ganz rechts.

_________________
aloa Eisenherz