Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Bitkodierung (https://www.delphipraxis.net/121381-bitkodierung.html)

freak4fun 26. Sep 2008 12:58


Bitkodierung
 
Hallo Leute,
ich habe einen Würfel der pro Zahl (Seite) ein Wort kennt. Er kennt also 6 Wörter, entspricht 3 Bit pro Wort. {1 => 001, 2 => 010, 3 => 011, 4 => 100, 5 => 101, 6 => 110} Nun möchte ich dieses Wort binär kodiert speichern. Wie mache ich das? Und was passiert wenn ich 2 Mal würfel ...
Die Aufgabe ist deutlich komplexer, vereinfacht entspricht es in etwa dem was ich hier Frage. ;)

grenzgaenger 26. Sep 2008 13:25

Re: Bitkodierung
 
wie meinst du das mit den codieren?

für die drei bit, kannst ja prima 'n Delphi-Referenz durchsuchenbyte her nehmen, oder z.b. Delphi-Referenz durchsuchenTBits

musst halt dann nur mit OR, AND, NOT, etc. setzen ...

freak4fun 26. Sep 2008 13:32

Re: Bitkodierung
 
Also ein Byte sieht in der Bitdarstellung ja so aus: 00000000. Wenn ich da nun einen String habe der so aussieht: "100010", wie kann ich da dann was setzen? Mir fehlt irgendwie das Grundverständnis. :(

Dax 26. Sep 2008 13:35

Re: Bitkodierung
 
Die Stringstelle n entspricht Bitstelle 0, String n-1 ist Bit 1, String n-2 Bit 2 usw usf smt. Du musst also nur den String vorwärts durchlaufen und das jeweilige Bit 0 entsprechend setzen, bevor du das ganze Byte um 1 nach links schiebst.

Luckie 26. Sep 2008 13:36

Re: Bitkodierung
 
So geht das nicht. Mach es so:
Code:
1: 000001
2: 000010
3: 000100
4: 001000
5: 010000
6: 100000
Wenn du jetzt zweimal würfelst, zum beispiel die 3 und die 5 kannst du die Werte mit OR verknüpfen:
Code:
3: 000100
5: 010000 OR
---------
   010100
Willst du jetzt rausfinden ob ein Bit gesetzt ist, prüfst du auf das Bit mit einer AND Verknüfung:
Code:
   010100
3: 000100 AND
-------------
   000100
Bekommst du als Ergebnis das geprüfte Bit, ist es gesetzt. Siehe dazu auch: http://www.michael-puff.de/Artikel/BitMasken.shtml

Natürlich kannst du das ganze auch mit den dezimalen Entsprechungen machen.

DeddyH 26. Sep 2008 13:46

Re: Bitkodierung
 
Oder auch hier mal durchlesen: http://www.delphipraxis.net/internal...t.php?t=113482

freak4fun 26. Sep 2008 14:14

Re: Bitkodierung
 
Das klingt interessant. Danke euch! :thumb:

p80286 26. Sep 2008 14:19

Re: Bitkodierung
 
Hallo zusammen,

mal vorsichtig nachgefragt wenn bei zweimal würfeln,zweimal die DREI kommt, wie soll den das kodiert werden?
wenn ich nicht für jeden Wurf ein(BYTE/Word/String..) zum Speichern nutze ?

Gruß
K-H

Luckie 26. Sep 2008 14:44

Re: Bitkodierung
 
Na dann hast du:
Code:
000100
000100 OR
------
000100
Und der Test, ob du eine drei gewürfelt hast, ergibt auch wieder 000100. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 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