将数X的第N位取反,N从0开始:
function ToggleBit(const X, N: integer): integer;
begin
  result := X xor (1 shl (N and 31));
end;更有效的方法,但是平台依赖:
function ToggleBit(const X, N: integer): integer;
asm
  btc eax,edx
end;

解决方案 »

  1.   

    用位运算
    置1和只有某位是1的数据|=就可以了。
    置0和只有某位是0的数据&=就可以了。
    只有某位是0的数据可以通过只有某位是1的数据按位取反可得。
    只有某位是1的数据可通过把1左移n位得到。
      

  2.   


    x86上也有相应的bit设置1、0的指令:
    function SetBit(const X, N: integer): integer;
    asm
      bts eax,edx
    end;function ResetBit(const X, N: integer): integer;
    asm
      btr eax,edx
    end;平台无关的实现你也可以自己写出来。
      

  3.   


    x86上也有相应的bit设置1、0的指令:
    function SetBit(const X, N: integer): integer;
    asm
      bts eax,edx
    end;function ResetBit(const X, N: integer): integer;
    asm
      btr eax,edx
    end;平台无关的实现你也可以自己写出来。

    谢了