![]() |
Re: Zugriff auf einzelne bits einer Variable
auf bits zugreifen ist was anderes als zu verstehen was bei operationen mit den bits passiert. Wenn du "variable1 + variable2" ausführst wird eine binäre operation ausgeführt und wenn du diese operationen verstehst dann weißt du auch wie man üblicherweise bits manipuliert. Auch bei "if (ausdruck1 or ausdruck2)" wird eine bitoperation ausgeführt wo letztendlich dann die bits anders stehen. Das zu verstehen sollte bei der Arbeit mit Microcontrollern nicht schaden. Denn wenn du das weißt, weißt du auch wo du mit Optimierungen anfangen kannst. Ein Bits setzen geht übrigens mit or.
Variable1: 010000 Variable2: 000010 mit or verknüpft: Variable3: 010010 Wenn also das eine bit oder das andere gesetzt ist wird es auch beim ergebnis gesetzt.
Delphi-Quellcode:
function setbit(variable: Integer; bitindex: Byte): Integer;
begin result := variable or (1 shl bitindex); end; |
Re: Zugriff auf einzelne bits einer Variable
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
ps: man kann auch ".." verwenden um Bit-Bereiche anzugeben: [bBit0..bBit3, bBit7] sind die ersten vier Bits und das höherwertigste Bit ($8F).
var
Foo: TByteBits; begin Foo := [bBit1, bBit3, bBit5]; ShowMessage(IntToStr(Byte(Foo))); Include(Foo, bBit0); Include(Foo, bBit2); Exclude(Foo, bBit1); Exclude(Foo, bBit3); ShowMessage(IntToStr(Byte(Foo))); Foo := Foo - [bBit0, bBit2] + [bBit1, bBit3]; ShowMessage(IntToStr(Byte(Foo))); end; |
Re: Zugriff auf einzelne bits einer Variable
Zitat:
denn wenn das bit schon gesetzt ist kommt totaler müll dabei raus. /Edit: Wie es sich bei sets verhält weiß ich nicht. Aber man sollte sich sowas gar nicht erst angewöhnen bei bitoperationen mit + und minus zu arbeiten. |
Re: Zugriff auf einzelne bits einer Variable
Zitat:
...der Compiler macht mit den Bits(-Sets) genau das was man erwartet - nur mit dem Unterschied, dass man den Code noch lesen kann und die Optimierung dem Compiler überlassen bleibt. (Ich weiß was ich tue - nicht immer, aber oft genug) |
Re: Zugriff auf einzelne bits einer Variable
hmm, komisches verhalten. Eigentlich hatte ich erwartet das bei der Verwendung von "+" also bei einer Addition etwas dazu kommt und nicht das nichts passiert wenn ich etwas addiere.
|
Re: Zugriff auf einzelne bits einer Variable
Zitat:
Es gibt noch andere Operatoren für Sets (<=, >=, *, ...) - damit könnte man sich in diesem Beispiel sämtliche binären Operatoren sparen (die man spätestens nach zwei Wochen, trotz Quelltext, nur noch mühsam lesen/verstehen kann). |
Re: Zugriff auf einzelne bits einer Variable
* / etc sind entsprechend auch anders definiert für Mengen. Damit bekommt man dann halt die Schnittmenge, etc.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02: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 by Thomas Breitkreuz