Zum Inhalt springen

[Delphi 6] Shiftoperatoren - shl und shr


Empfohlene Beiträge

Hallo,

hoffe ihr könnt mir helfen.

ich habe den Wert 248 in einer Bytevariable names myByte.

Jetzt möchte ich die ersten 4 bits alleine als Zahl haben.

Also die 8 möchte ich. Wichtig ist das es mit den Schiftoperatoren

gelöst werden soll.

Ich mach also folgendes

myByte := (myByte shl 4) shr 4

was im Binären (in meinem Kopf) so abläuft:

248 = 1111 1000

so jetzt shl 4 = 1000 0000

dann shr 4 = 0000 1000

= 8

was mach ich falsch ?? wenn das mein Programm macht kommt immer wieder 248 raus :(


var myByte : Byte;
...
myByte := 248;
showMessage(IntToStr(myByte));
myByte := LeseBits(myByte);
showMessage(IntToStr(myByte));
...
function TForm1.LeseBits(zahl: byte): byte;
begin
result := (zahl shl 4) shr 4;
end;
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

also ich hab mir die beiden Variablen in die liste der zu überwachenden Werte gelegt.

mybyte := 248 (binär 1111 1000)

// Funktionsaufruf //

mybyte := mybyte shl 4 (128 - binär 1000 0000)

mybyte := mybyte shr 4 (8 - binär 0000 1000)

// Ende der Funktion //

mybyte := 248 (wieder der ausgangswert :( )

oder was meintest du mit Zwischenergebnisse.

Es verhält sich alles wie geplant nur leider ist es beim funktionende der alte wert wieder da :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

wenn ich die shl und shr einzeln mache gehts. auf einmal gehts aber nicht, ich weiß allerdings auch nicht warum.

So zweiter Fehler war ich hab in mybyte zurückübergeben. Jetzt hab ich noch eine Variable die das Funktionsergebnis aufnimmt.

Jetzt gehts auf einmal.

Danke jedenfalls für die HIlfe. Hatte wahrscheinlich bloß ein Brett vorm Kopf :D

Link zu diesem Kommentar
Auf anderen Seiten teilen

was im Binären (in meinem Kopf) so abläuft:

248 = 1111 1000

so jetzt shl 4 = 1000 0000

dann shr 4 = 0000 1000

= 8

was mach ich falsch ??

Vielleicht das, dass ein Integer in deinem Kopf nur 8bit hat (in Wirklichkeit aber 32)?

EDIT:

Auch wenn du als Typ Byte angibst, laut Delphi Hilfe verarbeitet shl Integer-Operanden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hab ich anscheinend überlesen :(

aber wieso funktioniert die "berechnung" denn dann?

Keine Ahnung, war nur eine Vermutung meinerseits...

Jetzt da ich eine neue Variable verwende funktioniert das auch.

Ich vermute mal, dass da irgendein Fehler im Code war (also die Variable nicht korrekt gesetzt oder nachher nochmal überschrieben...).

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da sach ich nur muh ;) du machst es dir ganz schön schwer

HiByte = (Value and $F0) shr 4

LoByte = Value and $0F

Soweit ich mich erinner kann gibt es auch die funktionen Hi() und Lo() in delphi...hab schon ewig kein delphi mehr geproggt(ich hoffe das präfix $ ist für hex)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten Morgen,

das mit dem $ stimmt soweit.

High und Low glaub ich gibts auch.

Da zur Zeit nichts ansteht hab ich mich mal an das Thema Steganographie herangewagt und bewältigt :D

Hab aber nur Cardinal als Datentyp verwendet (32 bit ohne Vorzeichen). Hat auch gleich funktioniert :) da arbeitet delphi und mein Kopf gleich :marine

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...