AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Int64 => Problem mit Bits

Offene Frage von "delphis spassbremse"
Ein Thema von delphis spassbremse · begonnen am 25. Feb 2008 · letzter Beitrag vom 26. Feb 2008
Antwort Antwort
delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#1

Int64 => Problem mit Bits

  Alt 25. Feb 2008, 11:46
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Int64 => Problem mit Bytes

  Alt 25. Feb 2008, 11:55
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)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Int64 => Problem mit Bytes

  Alt 25. Feb 2008, 11:58
Und die beiden Bits kannst du einfach so herausholen:

Delphi-Quellcode:
var
  i64: Int64;
begin
  i64 := Int64($B91) shl 48;
  ShowMessage(IntToHex(i64 shr 56 and 3, 2));
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

Re: Int64 => Problem mit Bits

  Alt 26. Feb 2008, 16:35
(Nur ich habe keine Ahnung, wie ich die eine Hex bekomme, ohne stundenlang mim Blatt Papier zu rechnen)
  • Windows-Taschenrechner aufmachen
    > Startmenü > Programme > Zubehör > Rechner
    oder > Startmenü > Ausführen... > calc[enter]
  • auf Wissenschaftlich umstellen (falls noch nicht aktiv)
  • "Bin" auswählen
  • Binärwert eintippen oder reinkopieren
  • auf "Hex" umstellen
  • Hexadezimalwert rauskopieren

[add]
Zitat:
da sämtliche Programme die Berechnung verweigern
was sind sämtliche Programme? (die Calc.exe kann jetztenfalls mit 64-Bit-Werten umgehen)
Zitat:
und ich in Delphi ja keine übergroßen bits direkt reinschreiben kann
wieso nicht?

Zitat:
Mit "OR" ist es ja kein Problem
OR?
meinst du nicht AND?
Delphi-Quellcode:
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 ...
[add2]
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Int64 => Problem mit Bits

  Alt 26. Feb 2008, 17:24
Zitat von delphis spassbremse:
da sämtliche Programme die Berechnung verweigern
Die Zahl ist zu Groß!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Int64 => Problem mit Bits

  Alt 26. Feb 2008, 17:38
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
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#7

Re: Int64 => Problem mit Bits

  Alt 26. Feb 2008, 17:50
Zitat:
(Nur ich habe keine Ahnung, wie ich die eine Hex bekomme, ohne stundenlang mim Blatt Papier zu rechnen)
als ich auch noch üben musste, hatte ich mir mal so einen netten kleinen optischen Bin-Hex-Int Umrechner gebastelt
Siehe Anhang ..

mfg stoxx
Miniaturansicht angehängter Grafiken
binhexintscreen_132.png  
Angehängte Dateien
Dateityp: zip bintoint_730.zip (219,9 KB, 3x aufgerufen)
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz