![]() |
Prüfen ob Bitposition gesetzt
Wie kann ich prüfen ob eine Bitposition gesetzt ist?
Also bei "1011" ob an der ersten und letzten stelle eine 1 steht? Danke für eure Hilfe |
Re: Prüfen ob Bitposition gesetzt
Hallo Matthias,
es kommt auf den Variablentyp an. Bei einem String:
Delphi-Quellcode:
Ist die Zahl als Integer abgespeichert (also 1011 binär=11 dezimal):
If (sVar[1] = '1') and (sVar[4] = '1') then
Delphi-Quellcode:
Greetz
if (iVar and 9) = 9 then
alcaeus |
Re: Prüfen ob Bitposition gesetzt
Delphi-Quellcode:
Image ist ein Array of Byte.
function TBiPi.GetBit(Index: Word): Boolean;
begin Result := Image[Index DIV 8] AND ($01 SHL (Index MOD 8)) > $00; end; |
Re: Prüfen ob Bitposition gesetzt
Zitat:
Delphi-Quellcode:
X ist irgendein Integer-Typ (Integer, Byte, Word ... siehe
BitIstGesetzt := X and 1 <> 0;
If X and 1 <> 0 Then ... ![]() BitIstGesetzt ist demnach Boolean und die 1 steht für ...000001 (Binär). Also
Code:
1011 and 0001 = 0001 // Ergebnis <> 0 dann ist Bit gesetzt
1010 and 0001 = 0000 // Ergebnis = 0 dann ist nicht gesetzt |
Re: Prüfen ob Bitposition gesetzt
Noch eine möglicjkeit:
Delphi-Quellcode:
type
T32Bits = set of (0..31); ... var I:integer; begin i := ???; ... if 0 in T32Bits(i) then juhuu(0); // bit 0 prüfen if 3 in T32Bits(i) then juhuu(3); // bit 3 prüfen end; //edit: TBits -> T32Bits ;) |
Re: Prüfen ob Bitposition gesetzt
Danke für eure Anworten. Den Typ den ich testen möchte ist ein Cardinal, das ist aber bekanntlich ein Zahlentyp und deswegen verwende ich die Integer variante.
Greetings |
Re: Prüfen ob Bitposition gesetzt
So einfach kann man das überprüfen:
(wert ist der zu prüfende Cardinal, bitIndex die Nummer des Bits (Zählung beginnt bei null, als muss bitIndex im Bereich 0..31 liegen))
Delphi-Quellcode:
Als Ergebnis erhält man True, wenn das betreffende Bit gesetzt ist.
function BitGesetzt(wert: Cardinal; bitIndex: Byte): Boolean;
begin Result:= (wert and (1 shl bitIndex)) <>0; end; MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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