procedure TForm1.Button1Click(Sender: TObject); var t,x,y : integer; begin t := 10; // 00001010 x := 2; // 00000010 y := t and x; // Get second. showmessage(inttostr(y)); // return y = 2 --> 00000010 x := 4; // 00000100 y := t xor x; //set third to 1 showmessage(inttostr(y)); // return y = 14 --> 00001110;end;
var
t,x,y : integer;
begin
t := 10; // 00001010
x := 2; // 00000010
y := t and x; // Get second.
showmessage(inttostr(y)); // return y = 2 --> 00000010
x := 4; // 00000100
y := t xor x; //set third to 1
showmessage(inttostr(y)); // return y = 14 --> 00001110;end;
还是直接用位操作好
我要保证得到的数是16位或32位,这该怎么办?
如果一定要这样做, 最好用汇编(delphi+asm):function ASM_32bit_XOR (A : integer; b : integer) : integer;
asm
xor eax, edx
end;function ASM_16bit_XOR (A : integer; b : integer) : integer;
asm
xor ax, dx
end;function ASM_16bit_AND (A : integer; b : integer) : integer;
asm
AND ax, dx
end;procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage(inttostr(ASM_32bit_XOR(10,4)));
showmessage(inttostr(ASM_16bit_XOR(10,4)));
showmessage(inttostr(ASM_16bit_AND(10,2)));
end;end.