![]() |
Bits
Hi,
ich habe ein Prblem mit Bits. Ich weiß nicht so genau, wie man rausfinden kann, ob ein Bit gesetzt ist oder nicht. Vieleicht kennt jemand ein gutes Tut über soetwas. Thx & Mfg |
Re: Bits
Delphi-Quellcode:
Sollte so gehen...
function TestBit(Value : byte; bit : byte) : boolean;
begin if (Value AND (1 shl bit )) = (1 shl bit) then result := true else result := false; end; Ansonsten guck dir mal die Befehle "AND", "OR", "NOT" an... |
Re: Bits
Danke Nightshade.
das werde ich gleich ausprobieren. Die Befehle "AND", "OR", "NOT", etc kenne ich. Habe ich schon in abfragen benutzt. Ich wusste nur nicht, wie die als Bit-Abfrage benutz werden. |
Re: Bits
ginge es nich auch kürzer so?
Delphi-Quellcode:
ich hätte es jetzt spontan so gemacht:
function TestBit(Value : byte; bit : byte) : boolean;
begin result:=(Value AND (1 shl bit )) = (1 shl bit); end;
Delphi-Quellcode:
function TestBit(Value : byte; bit : byte) : boolean;
begin result:=(Value and (1 shl bit))<>0; end; |
Re: Bits
So wie Nightshade es im Beispiel gezeigt hat, habe ich es nicht hinbekommen. Ich habe es jetzt nachdem ich ein Beispiel hatt so gemacht:
Delphi-Quellcode:
Jetzt hat sich mir ncoh eine Frage gestellt, weiß jemand, wie ich eine Konstante gleich Binär angeben kann? Bei Hexadezimal weiß ich es, aber nicht binär;
function TestBit(Value : byte; bit : byte) : boolean;
begin result := ((Value AND bit) = bit)); end; |
Re: Bits
das kann so aber net funzen, oder?
hast du das mal getestet? |
Re: Bits
Ja das habe ich so getestet läuft ohne Probleme.
|
Re: Bits
nein, es ist falsch!!!
ich hab 2er potenzen eingegeben -> genau 1 bit true es müsste so sein: 1 1 2 2 4 3 8 4 16 5 32 6 es ist aber laut deiner procedure so: 1 1 2 2 4 4 8 8 16 16 |
Re: Bits
Okya, um das ganze etwas einfacher zu machen:
Delphi-Quellcode:
Beispiel:
function BitSet(Value: Byte; BitCnt: Byte): Boolean;
begin Result := (( Value AND Round ( power (2, BitCnt-1) )) = Round ( power (2, BitCnt-1) )); end;
Delphi-Quellcode:
if BitSet (24, 5) then // TestBit (00011000, 00010000)
if BitSet (24, 4) then // TestBit (00011000, 00001000)
ShowMessage ('Ja!'); ShowMessage ('Ja!');[/delphi] |
Re: Bits
aber das is so lang :(
das funzt:
Delphi-Quellcode:
function TestBit(Value : byte; bit : byte) : boolean;
begin result:=(Value AND (1 shl bit )) = (1 shl bit); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 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