位运算Pascal相关函数/过程

Function Getlen(P:longint):longint;
var
 i:longint;
  begin
  getlen:=0;
  for i:=1 to 31 do
    begin
    if p and 1=1 then getlen:=i;
    p:=p shr 1;
  end;
end;

Function GetBit(Num,bit:longint):boolean;
  begin
  if (num and (1 shl(bit-1)))=0 then exit(false) else exit(true);
end;

Procedure changeBit(var num:longint;bit:longint;opt:boolean);
  begin
  if opt then
    num:=num or (1 shl (bit-1))
  else
    num:=num and not (1 shl (bit-1));
end;

Function getblock(num:longint;start,len:longint):longint;
var
 i,tmp:longint;
  begin
  tmp:=0;
  for i:=1 to len do
    tmp:=tmp or (1 shl (i-1));
  Getblock:=(num and (tmp shl (start-1))) shr (start-1);
end;

Procedure changeBlock(var num:longint;start,opt:longint);
var
 len,tmp,i:longint;
  begin
  len:=getlen(opt);
  tmp:=0;
  for i:=1 to len do
    begin
    tmp:=tmp or 1;
    tmp:=tmp shl 1;
  end;
  tmp:=not (tmp shl (start-1));
  num:=num and tmp;
  num:=num or (opt shl (start-1));
end;      

 

转载于:https://www.cnblogs.com/htfy/archive/2012/03/22/2412251.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值