![]() |
Int64 => Problem mit Bits
Hallo,
ich stehe vor folgendem Problem: Ich habe ein Int64 und möchte ganz weit vorne 2 Bits rausholen. Mit "OR" ist es ja kein Problem, nur weiß ich nicht, mit welcher Zahl ich das ganze zu vergleichen ist, da sämtliche Programme die Berechnung verweigern und ich in Delphi ja keine übergroßen bits direkt reinschreiben kann habe ich nun ein Problem^^ Meine Int64 Var sieht so aus: 00001011 10010001 00000000 00000000 00000000 00000000 000000000 00000000 Und so soll die "Maske" aussehen: 00001100 00000000 00000000 00000000 00000000 00000000 000000000 00000000 (Nur ich habe keine Ahnung, wie ich die eine Hex bekomme, ohne stundenlang mim Blatt Papier zu rechnen) Grüße, Björn |
Re: Int64 => Problem mit Bytes
Moin Björn,
wenn Du die binäre Darstellung hast, kannst Du die hexadezimale recht leicht bilden: Jede Stelle einer hexadzimalen Zahl entspricht 4 Bit einer binär dargestellten Zahl. In Deinem Falle: 00001100 00000000 00000000 00000000 00000000 00000000 000000000 00000000 wird zu: $0C00000000000000 weil 1100 = 12 (dezimal) = C (hexadezimal) |
Re: Int64 => Problem mit Bytes
Und die beiden Bits kannst du einfach so herausholen:
Delphi-Quellcode:
Freundliche Grüße
var
i64: Int64; begin i64 := Int64($B91) shl 48; ShowMessage(IntToHex(i64 shr 56 and 3, 2)); end; |
Re: Int64 => Problem mit Bits
Delphi-Quellcode:
(Nur ich habe keine Ahnung, wie ich die eine Hex bekomme, ohne stundenlang mim Blatt Papier zu rechnen)
[add] Zitat:
Zitat:
Zitat:
meinst du nicht AND?
Delphi-Quellcode:
[add2]
Var i: Int64;
i := $1722000000000000; // 00001011 10010001 00000000 00000000 00000000 ... i := i and $0C00000000000000; // 00001100 00000000 00000000 00000000 00000000 ... // i = $0800000000000000 // 00001000 00000000 00000000 00000000 00000000 ... und zu dem, was marabu (in #6) grad schrieb
Delphi-Quellcode:
Var i: Int64;
i2: Integer; i := $1722000000000000; // 00001011 10010001 00000000 00000000 00000000 .... i2 := Int64Rec(i).Hi and $0C000000; // 00001100 00000000 00000000 00000000 // i2 = $08000000 // 00001000 00000000 00000000 00000000 |
Re: Int64 => Problem mit Bits
Zitat:
|
Re: Int64 => Problem mit Bits
Hi,
du musst keine riesige Hex-Zahl bilden, welche den Wertebereich aller Werkzeuge sprengt. Es genügt wenn du nur die signifikanten Bytes betrachtest und den Rest - das sind schließlich Nullstellen - dazuschreibst. Für Bit-Tests wie den von dir beschriebenen kannst du die Nullstellen durch geeignete Schiebeoperationen eliminieren. Hast du meine beiden Code-Zeilen in Beitrag #3 verstanden? Freundliche Grüße |
Re: Int64 => Problem mit Bits
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Siehe Anhang .. mfg stoxx |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 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