AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zugriff auf einzelne bits einer Variable
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf einzelne bits einer Variable

Ein Thema von earlyperl · begonnen am 15. Apr 2008 · letzter Beitrag vom 15. Apr 2008
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:27
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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#12

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:30
Zitat von earlyperl:
Mein Gott ist das kompliziert...
Nö, nur anders

Zitat von earlyperl:
Ich habe Delphi 6 Pro.
Schade, in aktuellen Delphi-Versionen hätte man den Array-Operator für Bits (so wie im MC-Pascal) nachbilden können.

Zitat von earlyperl:
wenn du mir jetzt noch verrätst, wie ich ein bit setzen kann, währe ich dir sehr dankbar!
Include/Exclude für einzelne Bits, oder +/- für mehrere:
Delphi-Quellcode:
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;
ps: man kann auch ".." verwenden um Bit-Bereiche anzugeben: [bBit0..bBit3, bBit7] sind die ersten vier Bits und das höherwertigste Bit ($8F).
Nico Bendlin
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:34
Zitat:
Include/Exclude für einzelne Bits, oder +/- für mehrere:
NIEMALS!
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:39
Zitat von SirThornberry:
/Edit: Wie es sich bei sets verhält weiß ich nicht.
Das sind Sets...
...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)
Nico Bendlin
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#15

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:50
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 12:05
Zitat von SirThornberry:
hmm, komisches verhalten.
Sets haben halt ein eigenes Operatorenverhalten (welches für Sets durchaus sinnvoll ist).
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).
Nico Bendlin
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#17

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 12:06
* / etc sind entsprechend auch anders definiert für Mengen. Damit bekommt man dann halt die Schnittmenge, etc.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz