function ExchangeBits(Value: Integer; Pos1: Integer; Pos2: Integer): Integer;
var
n: Integer;
t: Integer;
begin
Result := Value;
n := Pos1 - Pos2;
if n = 0 then
begin
Exit;
end;
if n < 0 then
begin
Pos2 := Pos1;
n := -n;
end;
t := ((Value shr n) xor Value) and (1 shl Pos2);
Result := Result xor t;
Result := Result xor (t shl n);
end;
元ねたはびびすけさんのビット交換 (RunRunDietOnline)。昔からある(バッド)ノウハウのひとつであるXORによる値の交換の応用ですね。
2012年6月6日
指定されたビットを交換する
整数型の値の指定された任意の2つのビットを交換する方法。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿