AGB  ·  Datenschutz  ·  Impressum  







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

Erstes gesetztes Bit finden

Ein Thema von messie · begonnen am 2. Sep 2010 · letzter Beitrag vom 2. Sep 2010
Antwort Antwort
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#1

Erstes gesetztes Bit finden

  Alt 2. Sep 2010, 12:51
Moin,

ich bastle gerade an einer crc-Routine und stehe vor der Wand . Und zwar ist ja der Datenwert um die Ordnung des Generatorpolynoms zu verschieben. Vor dem xor muss dann noch das generatorpolynom so nach links geshiftet (erweitert) werden, dass die beiden ersten gesetzten bits "übereinander" stehen. Grafisch auf dem Zettel geht das gut

Gibt es da einen Kunstgriff, den ich nicht kenne oder muss ich das zu Fuß machen?

Grüße, Messie
  Mit Zitat antworten Zitat
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.064 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Erstes gesetztes Bit finden

  Alt 2. Sep 2010, 14:07
@messie:
Kannst du das mal etwas ausführlicher beschreiben, am besten mit einem Beispiel, dem man auch die verwendeten Datentypen entnehmen kann ?!
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#3

AW: Erstes gesetztes Bit finden

  Alt 2. Sep 2010, 14:35
Um eine Zahl n binär zu speichern benötigst du Ceil(ld(n+1)) Bits. (Logarithmus zur Basis 2)

D.h. wenn man von rechts mit 0 anfängt zu zählen ist das höchste gesetzte Bit: Floor(ld(n+1))
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Erstes gesetztes Bit finden

  Alt 2. Sep 2010, 15:12
ASM und Befehl BSR = Index des höchsten Bits

http://www.delphipraxis.net/133667-ispoweroftwo.html
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Erstes gesetztes Bit finden

  Alt 2. Sep 2010, 15:15
Um eine Zahl n binär zu speichern benötigst du Ceil(ld(n+1)) Bits. (Logarithmus zur Basis 2)

D.h. wenn man von rechts mit 0 anfängt zu zählen ist das höchste gesetzte Bit: Floor(ld(n+1))

genau so etwas habe ich gesucht, Danke!

Hätte sonst eine Schleife benutzt, aber da muss man vorher wissen, wie groß der Input ist.
Übrigens das ld, gibt es das im Delphi oder war das Deine eigene Routine? Habe ich nicht gefunden, statt dessen LogN(2,n) benutzt.

Mit Assembler habe ich keine Erfahrung, das wird aber den Kollegen interessieren, der die Prozessorseite bearbeitet.

Danke, Messie
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Erstes gesetztes Bit finden

  Alt 2. Sep 2010, 15:22
OpenBit = Floor(ld(n+1))

http://www.delphipraxis.net/133667-i...tml#post910371
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Robotiker
(Gast)

n/a Beiträge
 
#7

AW: Erstes gesetztes Bit finden

  Alt 2. Sep 2010, 15:24
ASM und Befehl BSR = Index des höchsten Bits
Das ist zwar schnell, nagelt den Delphicode aber entgültig auf 32 Bit fest ...

Hier mal was portables, ist allerdings C:

http://www-graphics.stanford.edu/~seander/bithacks.html
  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 04:59 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