Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 32bit dword / wie finde ich raus ob bit 0,1 oder 2 gesetzt ? (https://www.delphipraxis.net/11620-32bit-dword-wie-finde-ich-raus-ob-bit-0-1-oder-2-gesetzt.html)

negaH 11. Nov 2003 09:38

Re: 32bit dword / wie finde ich raus ob bit 0,1 oder 2 geset
 
Eben nicht:

0. Bit = Bit 0
1. Bit = Bit 1
2. Bit = Bit 2

Damit
Code:
                                     3210 
0. Bit = 1 shl 0 = 1 = 1 shl Bit 0 = 0001 = 2^0
1. Bit = 1 shl 1 = 2 = 1 shl Bit 1 = 0010 = 2^1
2. Bit = 1 shl 2 = 4 = 1 shl Bit 2 = 0100 = 2^2
3. Bit = 1 shl 3 = 8 = 1 shl Bit 3 = 1000 = 2^3
Es geht also darum das der Bit Index von 0 bis 31 geht damit der Shift = Bitnummer wird.

Du, bzw. Sakuras Tut sagt aber.

1. Bit = Bit 0
2. Bit = Bit 1
3. Bit = Bit 2

dies widerspricht sich, man könnte meinen das ich da ein Krümelkacker bin :-)
Allerdings zeigt obige Tabelle sehr schön wie einfach sich alles merken lässt wenn man immer mit 0 basiertem Bitindex arbeitet, und mathematisch gesehen gibt es nur eine korrekte Bitnummerierung die von 0 bis 31 geht. Bei deiner Zählung wäre das

Code:
                                     3210 
1. Bit = 1 shl 0 = 1 = 1 shl Bit 0 = 0001 = 2^0
2. Bit = 1 shl 1 = 2 = 1 shl Bit 1 = 0010 = 2^1
3. Bit = 1 shl 2 = 4 = 1 shl Bit 2 = 0100 = 2^2
4. Bit = 1 shl 3 = 8 = 1 shl Bit 3 = 1000 = 2^3
??? :)


Gruß Hagen

Christian Seehase 11. Nov 2003 20:28

Re: 32bit dword / wie finde ich raus ob bit 0,1 oder 2 geset
 
Moin Hagen,

Zitat:

Zitat von negaH
Warum Konstanten ??

Zitat:

Zitat von Christian Seehase
Konstanten ..., die etwas darüber aussagen, was das jeweilige Bit zu bedeuten hat.

z.B. finde ich das hier übersichtlicher
(ausgedachtes Beispiel)

Delphi-Quellcode:
const
  _IsValidIndex = $4000;

begin
  if (dwFlags and _IsValidIndex) <> 0 then ...
end;
als das

Delphi-Quellcode:
if (dwFlags and $4000) <> 0 then ...
Darum Konstanten ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.
Seite 2 von 2     12   

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