Dann könnt ihr mir bestimmt auch erklären warum das hier nicht klappt:
Delphi-Quellcode:
function getbitfrombyte(b : byte; pos : integer) : Boolean;
Begin
if b shl (7-pos) = $80
then result := true
else result := false;
end;
var b : byte;
Begin
b := $FF;
if getbitfrombyte(b, 0)
then showmessage('JO')
else showmessage('nö');
end.
Warum liefert mir das "nö" ???
$FF = 1 1 1 1 1 1 1 1
Nr.: 7 6 5 4 3 2 1 0
Ich meine wenn ich b um 7 bits nach links verschiebe hab ich doch 1 0 0 0 0 0 0 0 und das ist doch $80 ...
könnte natürlich auch an mir leigen das ich einfach die Delphihilfe nicht verstehe aber so wie die das dort beschreiben müsste das 'JO' ergeben
Zitat von
F1:
Die Operationen x shl y und x shr y verschieben den Wert von x um y Bits nach links oder rechts (falls es sich bei x um einen vorzeichenlosen Integer handelt). Dies entspricht der Multiplikation oder Division von x durch 2^y. Das Ergebnis hat denselben Typ wie x. Wenn beispielsweise in N der Wert 01101 (dezimal 13) gespeichert ist, liefert N shl 1 den Wert 11010 (dezimal 26) zurück. Beachten Sie, dass der Wert von y als Restwert der Größe von Typ x interpretiert wird. Wenn z.B. x ein Integer ist, wird x shl 40 als x shl 8 interpretiert, da ein Integer 32 Bit hat, und 40 minus 32 den Wert 8 ergibt.