 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
| Zacherl |
#1| Verfasst am: 04.12.2008, 21:32 Titel: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 2.740 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:
Da treten aber Werte wie z.b. 26 auf, die doch eigentlich gar nicht möglich sein dürften.
Gruß Zacherl |
|
 |
|
|
|
| |
| 3_of_8 |
#2| Verfasst am: 04.12.2008, 21:44 Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 4.093 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! |
 |
|
|
|
| |
| Cyf |
#3| Verfasst am: 04.12.2008, 21:45 Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden |
 |
 |
 |
|
Mitglied Alter: 20 Status: offline Beiträge: 409 angemeldet: 30.05.2008 Lazarus

|
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, 21:48, insgesamt 2-mal bearbeitet. |
 |
|
|
|
| |
| Zacherl |
#4| Verfasst am: 04.12.2008, 21:53 Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 2.740 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 .. |
|
 |
|
|
|
| |
| Zacherl |
#5| Verfasst am: 04.12.2008, 21:57 Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 2.740 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 |
|
 |
|
|
|
| |
| thkerkmann |
#6| Verfasst am: 04.12.2008, 22:57 Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden |
 |
 |
 |
|
aktives Mitglied Alter: 48 Status: offline Beiträge: 438 angemeldet: 07.01.2006 Wohnort: Pulheim Brauweiler Delphi 2010 Professional

|
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/ |
 |
|
|
|
| |
| 3_of_8 |
#7| Verfasst am: 04.12.2008, 23:00 Titel: Re: 7, 6 - 5, 4, 3 und 0, 1, 2 Bit für neues Byte verwenden |
 |
 |
 |
|
Mitglied Alter: 19 Status: offline Beiträge: 4.093 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! |
 |
|
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
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.
|
|
 |