Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für CodeGear Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden
Ein Thema von Zacherl.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
Delphi-PRAXiS Forum - Übersicht -> Programmieren allgemein
Seite 1 von 1   [ 7 Beiträge ]  
 
 Autor 
 Nachricht 
 
Zacherl #1|Beitrag #972642Verfasst am: 04.12.2008, 22:32      Titel: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

Hey,

ich wusste nicht wie genau ich den Titel formulieren sollte. Ich habe ein bestimmtes Byte, z.b. $AC. Nun möchte ich daraus 3 Bytes machen und zwar soll im Byte1 nut das 7. und 6. Bit aus dem AC Byte verwendet werden, in Byte 2 das 5. 4. und 3. und so weiter.

Mein Ansatz war:
Delphi-Quellcode: markieren
b1 := (b shr 6);
      b2 := (b shl 2) shr 5;
      b3  := (b and 7);


Da treten aber Werte wie z.b. 26 auf, die doch eigentlich gar nicht möglich sein dürften.

Gruß Zacherl
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
3_of_8 #2|Beitrag #972650Verfasst am: 04.12.2008, 22:44      Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden Antworten mit Zitat
Mitglied
Alter: 18
Status: offline
Beiträge: 4.082
angemeldet: 22.03.2005
Wohnort: Dingolfing
Turbo Delphi für Win32

Hast du b vielleicht als Integer/Cardinal definiert? Treten die Probleme vielleicht nur bei b2 auf? Wenn ja, probier mal b2:=(b shr 3) and $07;

Daleks are superiooor! You will be exteeerminated!
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Cyf #3|Beitrag #972652Verfasst am: 04.12.2008, 22:45      Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden Antworten mit Zitat
aktives Mitglied
Alter: 20
Status: offline
Beiträge: 392
angemeldet: 30.05.2008
Turbo Delphi für Win32

Maskier die Bits mit der and-Verknüpfung.

Beispiel:

14 (Binär: 1110) and 3 (Binär: 0011) = 2 (Binär: 0010)

Es bleiben nur Bits, die in beiden Werten gesetzt sind erhalten.

[Edit]Entschuldige, hab deinen 3ten Wert überlesen, da versuchst du das ja bereits.
Dennoch solltest du das generell so machen, denn wenn ich dich richtig verstehe, brauchst du hinterher die Bits an ihren ursprünglichen Stellen und du vergisst hierbei sie zurück zu schieben, mit and kannst du dir das komplett sparen.

 Zuletzt bearbeitet von Cyf am 04.12.2008, 22:48, insgesamt 2-mal bearbeitet.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Zacherl #4|Beitrag #972653Verfasst am: 04.12.2008, 22:53      Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

@3_of_8: Ja tritt nur beim 2. Byte auf. Ist aber als Byte deklariert.
@Cyf: Ich probier das jetzt mal alles mit and zu lösen ..
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
Zacherl #5|Beitrag #972656Verfasst am: 04.12.2008, 22:57      Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden Antworten mit Zitat
aktives Mitglied
Alter: 18
Status: offline
Beiträge: 2.647
angemeldet: 03.09.2004
Delphi 2005 Personal

Delphi-Quellcode: markieren
Instruction.SIB_Scale := (Instruction.SIB and 192);
      Instruction.SIB_Index := (Instruction.SIB and 56);
      Instruction.SIB_Base  := (Instruction.SIB and 7);


Jetzt kommt bei den oberen Bytes auch noch Schrott raus Sad
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
thkerkmann #6|Beitrag #972667Verfasst am: 04.12.2008, 23:57      Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden Antworten mit Zitat
aktives Mitglied
Alter: 47
Status: offline
Beiträge: 357
angemeldet: 07.01.2006
Wohnort: Pulheim Brauweiler
Turbo Delphi für Win32

Ich denke es sollte so aussehen

Delphi-Quellcode: markieren
Instruction.SIB_Scale := (Instruction.SIB and $C0);  // ich verwende für sowas lieber hex
Instruction.SIB_Index := (Instruction.SIB and $38) shr 3;
Instruction.SIB_Base  := (Instruction.SIB and $07);


Gruss

Ich hab noch einen Koffer in Borland.
http://thkerkmann.homeip.net/
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
3_of_8 #7|Beitrag #972670Verfasst am: 05.12.2008, 00:00      Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden Antworten mit Zitat
Mitglied
Alter: 18
Status: offline
Beiträge: 4.082
angemeldet: 22.03.2005
Wohnort: Dingolfing
Turbo Delphi für Win32

Warum nicht einfach so:

Delphi-Quellcode: markieren
Instruction.SIB_Scale := (Instruction.SIB shr 6) and $03;
Instruction.SIB_Index := (Instruction.SIB shr 3) and $07;
Instruction.SIB_Base  := Instruction.SIB and $07;


Sollte auf jeden Fall funktionieren und ist auch etwas einfacher lesbar, denke ich.

Daleks are superiooor! You will be exteeerminated!
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Programmieren allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1   [ 7 Beiträge ]  
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
Du darfst keine Beiträge in dieses Forum schreiben.
Du darfst auf Beiträge in diesem Forum nicht antworten.
Du darfst Deine Beiträge in diesem Forum nicht bearbeiten.
Du darfst Deine Beiträge in diesem Forum nicht löschen.
Du darfst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten.
Du kannst Dateien in diesem Forum nicht herunterladen.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2009 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen