PDA

View Full Version : سوال:يك پروسيجر به نام set bit كه بيت nام را به دلخواه 0 يا 1 كند.



payampmk
چهارشنبه 02 تیر 1389, 14:13 عصر
به زبان پاسكال باشه.
خيلي زود ميخوام لطفا كمكم كنيد
ممنون.

SAASTN
چهارشنبه 02 تیر 1389, 18:36 عصر
بیت nام چی رو؟
اگه منظور بیت nام از مثلا یه بایته یه چیزی شبیه به این:
type
TBit = [0..7];
function SetBit(const Value: Byte; const Bit: TBit; const Flag: Boolean): Byte;
var
Mask: Byte;
begin
Mask := Power(2, Bit);
if Flag then
Result := Value or Mask
else
begin
Mask := 255 - Mask;
Result := Value and Mask;
end;
end;
من function نوشتم. برای تبدیل این تابع به روال:
procedure SetBit(var Value: Byte; const Bit: TBit; const Flag: Boolean);
// result -> Value

البته یادم نیست توی پاسکال هم باید از Power استفاده می کردیم یا ^.

tdkhakpur
چهارشنبه 02 تیر 1389, 20:50 عصر
procedure SetBit( data: pchar; BitNo:integer; status: boolean );
var
ChNo : integer;
ch : BYTE;
begin
ChNo := BitNo div 8;
BitNo := BitNo mod 8;
ch := BYTE(1 shl BitNo);
if status then
ch := byte(data[ChNo]) or ch
else
begin
ch := not ch;
ch := byte(data[ChNo]) and ch;
end;
data[ChNo] := char(ch);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
k : integer;
BitNo, ChNo : integer;
ch : BYTE;
begin
k:=1;
SetBit( @k, 0, false);
ShowMessage(IntTostr(k));
end;