![]() |
Bits ausm Integer
Hoi Dp
ich hab folgendes Problem: Ich hab einen Integer, brauch aber von dem nur die ersten 12 Bit und die zweiten 12. Ich hab schon gescuht, aber alles was ich gefunden habe, hat mir nicht wirklich weiter geholfen. |
Re: Bits ausm Integer
MyInt and $FFF
(MyInt shr 12) and $FFF |
Re: Bits ausm Integer
Und FFF weil FFF 2^12 oder?
|
Re: Bits ausm Integer
Ja.
Eine Hexadezimalziffer = 4 Bit. |
Re: Bits ausm Integer
Nein, weil $FFF = 2^12 - 1 = 1111_1111_1111b.
Durch das "And" werden alle anderen Bits ausgeblendet. |
Re: Bits ausm Integer
deutlicher wird es wenn man die führenden Nullen mit schreibt
Delphi-Quellcode:
$00000FFF = 00000000000000000000111111111111
(MyInt shr 12) and $00000FFF
Hier mal das ganze falls bei MyInt jedes zweite bit gesetzt ist:
Code:
MyInt = 10101010101010101010101010101010
Code:
MyInt shr 12 = 00000000000010101010101010101010
$00000FFF = 00000000000000000000111111111111 ----------------------------------------------- mit and = 00000000000000000000101010101010 |
Re: Bits ausm Integer
ok so vielo ist mir klar.
Die zweiten 12 les ich dann praktische so aus
Delphi-Quellcode:
oder?
MyInt shr 24 = 00000000000010101010101010101010
$00FFF000 = 00000000111111111111000000000000 ----------------------------------------------- mit and = 00000000000010101010000000000000 |
Re: Bits ausm Integer
das war schon zum auslesen der 2ten 12.
Wenn man die ersten 12 haben will braucht man nicht zu shiften. Durch das shiften werden die 1ten 12 nach rechts weg geschoben und die nächsten Bits rücken von links her nach. Wobei es jetzt sein kann das ich was falsches erzähle je nachdem was du als die "ersten" 12 ansiehst. Eine 1 sieht ja wie folgt aus:
Code:
ist das gesetzte Bit für dich jetzt das erste oder das letzte?
00000000000000000000000000000001
|
Re: Bits ausm Integer
Das erste, weil das ist ja 2^1
|
Re: Bits ausm Integer
dann stimmt meine Antwort - einfach das shiften weg lassen für die ersten 12.
Das ganze mal am Beispiel der 1 für MyINt
Code:
würdest du shiften (shr), würde das 1te Bit ja nach rechts raus geschoben werden.
MyInt mit Wert 1 = 00000000000000000000000000000001
$00000FFF = 00000000000000000000111111111111 --------------------------------------------------- mit and = 00000000000000000000000000000001 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 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