• 移位操作


    在权限设置或者串口设置等方面个人觉得很有用

     //获取每一位的状态  返回值 状态 0,1
      function GetBitSate(dw1:DWORD; Pos:Byte):Byte;
      //设置每一位的状态  返回值 设置后的数据
      function SetBitSate(dw1:DWORD; Pos:Byte; Sate: Byte): DWORD;
      //获取最后8,16,24位的值   返回值 8位的数值
      function GetValue(dw1:DWORD; Pos:Byte):Integer;
      //设置最后8位的值         返回值 设置后8位的数值
      function SetValue(dw1:DWORD; Pos:Byte; nValue:Integer):DWORD;

    //从第0位开始   31,30,29..0;
    function GetBitSate(dw1:DWORD; Pos:Byte):Byte;
    begin
      Result:=((dw1 and (1 shl Pos))shr Pos);
    end;
    
    function SetBitSate(dw1:DWORD; Pos:Byte; Sate: Byte): DWORD;
    var
      dw2: DWORD;
    begin
      dw2 := dw1;
      Result := dw2;
      if GetBitSate(dw1,Pos) = Sate then Exit;
      case Sate of
        0: Result := dw2 and (not (1 shl Pos));
        1: Result := dw2 or (1 shl Pos);
      end;
    end;
    
    function GetValue(dw1:DWORD; Pos:Byte):Integer;
    begin
      //取数的8位,16位,24位的值
      Result := 0;
      if not pos in[8,16,24] then Exit;
      case Pos of
        8: Result:= dw1 and $FF;
        16: Result:= dw1 and $FFFF;
        24: Result:= dw1 and $FFFFFF;
      end;
    end;
    
    
    
    function SetValue(dw1:DWORD; Pos:Byte; nValue:Integer):DWORD;
    begin
      Result := 0;
      if not pos in[8,16,24] then Exit;
      case Pos of
        8: Result:= dw1 and (not $FF) or nValue;
        16: Result:= dw1 and (not $FFFF) or nValue;
        24: Result:= dw1 and (not $FFFFFF) or nValue;
      end;
    end;
    

    procedure TForm1.btn1Click(Sender: TObject);
    var
      a, b: Byte;
      b1, b2: Byte;
    begin
      //取一个字节中的前4位:v := v and $0F; //低4位
      //取一个字节中的后4位:v := v shr $04; //高4位
      a := 245;
      b1 := a and $0F;
    
     // 1111 0101
     // 0000 1111
      b2 := a shr $04;
      ShowMessage(IntToStr(b1));
      ShowMessage(IntToStr(b2));
    
      //将2个byte高低位合并
      b := (b1 and $0F) or (b2 shl $04);
      ShowMessage(IntToStr(b));
    end;
  • 相关阅读:
    vue+antDesign 多个select下拉组件实现已选择项不可用(置灰)
    antd + vue 点击编辑文本切换成可编辑状态(附下拉框)
    antDesign的table组件设置行列样式
    jQuery 效果之显示隐藏
    jQuery 样式操作
    jQuery对象筛选选择器
    jQuery 和DOM对象互相转化方法
    JQuery-01-1
    常见网页特效
    WebApl-javescript-动画函数
  • 原文地址:https://www.cnblogs.com/doorsky/p/1662156.html
Copyright © 2020-2023  润新知