Zitat von
Sharky:
Hai Andy,
Du musst jetzt nur noch die Bits nach rechts verschieben
SHR
Hi Andy, da hat Sharky recht.
Jetzt mußt du nur mal sagen, ob die restlichen Bits im Zieloperanden erhalten bleiben sollen. Wenn ja, ist es nochmal ein wenig komplizierter, da mußt du das Ergebnis von "Quelle UND Maske" mit SHR oder ROR nach rechts verschieben und die negative Maske ebenfalls, da du ja dann alles außer Bits 0-4 erhalten willst.
Nachtrag: ... ich hab da mal was vorbereitet
Delphi-Quellcode:
function CopyBits(Mask, Source:Word; var Target:Word; ShiftTrgtBits:ShortInt = 0):Word;
begin
// We don't want to shift at all
if (ShiftTrgtBits = 0) then
Target := (Source AND Mask) OR (Target AND (NOT Mask))
else
// We want to shift <---
if (ShiftTrgtBits < 0) then
Target := ((Source AND Mask) SHL ShiftTrgtBits) OR (Target AND ((NOT Mask) SHL ShiftTrgtBits))
else
// We want to shift --->
if (ShiftTrgtBits > 0) then
Target := ((Source AND Mask) SHR ShiftTrgtBits) OR (Target AND ((NOT Mask) SHR ShiftTrgtBits));
Result := Target;
end;