O
occult
Unregistered / Unconfirmed
GUEST, unregistred user!
看到蚯蚓兄关于一个二进制数位运算的问题,有几处不明,想请指点:
>>3.分别取a与b低位合并成c c:= 01010111;
>>>>>> C:=(A Shl 4) or (B and $0F);
请问1: 取一个整数的低位用 C:=B and $0F,那么取一个整数的高位该如何写
呢?显然 C:= (A shl 4) and 1是不行的.
请问2:
>>>>>定义函数SetBit,给Value的第Bit位置位
>>>>>procedure SetBit(var Value:Byte;Bit:Byte);
>>>>>begin
>>>>> Value:=Value or (1 Shl Bit);
>>>>>end;
我对这个过程有质疑,觉的不如改成为如下二个过程,一个用设置位为1,
一个用来设置位为0
function SetBitOn(Value:integer;Bit:Byte):integer;
begin
REsult:= Value or ( 1 Shl Bit );
end;
function SetBitOFF(Value:integer;Bit:Byte):integer;
begin
Result: Value and not ( 1 Shl Bit );
end;
请问3: 为什么不用VCL中的TBits类呢?
>>3.分别取a与b低位合并成c c:= 01010111;
>>>>>> C:=(A Shl 4) or (B and $0F);
请问1: 取一个整数的低位用 C:=B and $0F,那么取一个整数的高位该如何写
呢?显然 C:= (A shl 4) and 1是不行的.
请问2:
>>>>>定义函数SetBit,给Value的第Bit位置位
>>>>>procedure SetBit(var Value:Byte;Bit:Byte);
>>>>>begin
>>>>> Value:=Value or (1 Shl Bit);
>>>>>end;
我对这个过程有质疑,觉的不如改成为如下二个过程,一个用设置位为1,
一个用来设置位为0
function SetBitOn(Value:integer;Bit:Byte):integer;
begin
REsult:= Value or ( 1 Shl Bit );
end;
function SetBitOFF(Value:integer;Bit:Byte):integer;
begin
Result: Value and not ( 1 Shl Bit );
end;
请问3: 为什么不用VCL中的TBits类呢?