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 件のコメント:
コメントを投稿