11011110和11111111按位逻辑与运算后结果为11011110 怎么得到的?

解决方案 »

  1.   

    编程实现两个数按位与,觉得是用AND运算吧`~可是得不到11011110这个结果
      

  2.   

    var
      A,B,C : Byte;
    begin
      A := 222;//每个二进位用二进制表示就是11011110
      B := 255;
      C := A and B;
      Showmessage(IntToStr(C));//222 
    end;你不会是想得到11011110这样的字符串吧?其实也很简单的
      

  3.   

    参考一下:http://rabbitfox.blog.sohu.com/36987625.html另外可以直接用位运算符写代码。没太搞明白楼主想要什么,猜测着提供一些信息。
      

  4.   

    if $DE and $FF = $DE then ShowMessage('OK');
      

  5.   

    写了一个小函数,如果楼主用得上,就用。uses Math;//因为用了Min()函数,所以引用它
    {$R *.dfm}function AndBinStr(const S1, S2: string): string;
    //用二进制字符串表示的两个数按位与后返回二进字符串
    var I, L : integer;
    begin
      Result := '';
      L := Min(Length(S1),Length(S2));
      for I := 1 to L do
        Result := Result + IntToStr(StrToInt(S1[I]) and StrToInt(S2[I]));
    end;procedure TForm1.Button1Click(Sender: TObject);//  测试
    var
      S1, S2 ,S : string;
    begin
      S1 := '11011110';
      S2 := '11111111';
      S := AndBinStr(S1,S2);
      Showmessage(S);
    end;
      

  6.   

    11011110和11111111都是二进制数(十进制为222和255), 我想要的是11011110 and 11111111 的结果为11011110, 而不是222 and 255 的结果222
      

  7.   

    知道你的意思了。一、往前看一下我刚刚写的一个小函数(可以再加一个参数“逻辑运算符”,扩充为可以进行各种逻辑运算的)。二、或者:222 and 255 = 222之后,把222这个结果转换为二进制字符串表示。前面已说了如何转换(一是我给了一个网址,二是可以用位运算符,三,网上估计有这样的现成函数,自己写也可以)
      

  8.   

    11011110和11111111 应该是二进制的字符串表示吧
    如果进行与运算,即对应的位进行与 
    //1 and 1=1 
    //0 and 1=0
    //1 and 0=0
     
     1   1   0   1   1   1   1   0
    and and and and and and and and 
     1   1   1   1   1   1   1   1
    =
     1   1   0   1   1   1   1   0
     
      

  9.   

    十进制转二进制串
    function IntToBin(A:Integer):string;
    var
      i:Integer;
    begin
      for i:=0 to SizeOf(Integer)*8-1 do
      begin
        Result:=IntToStr((A shr i) and 1)+Result;
      end;
    end;
      

  10.   

    还有一事,本来不打算说,因为相信楼主早就知道:在汇编中有类似 1010B 这样对立即数进行二进制表示;但在高级语言(我所知的比如C/C++、Basic、ObjectPascal、FoxPro)中似乎没有这种表示法。直观上比较接近的,就是用字符串或字符数组(只是直观上比较象而已,但已经完全不是同一个数据类型,因此需要换算的)。本贴的问题似乎已经得到解决了。前面有我写的一个函数,可以直接把 '1000' '1111'这样的串进行"与”操作,返回一个'1000'这样的串。我曾提到的“通过位运算符(左移、右移、与或非)把数的计算结果转换为串”的方法,也已由HsWong给出代码。
      

  11.   

    另外,如果楼主有兴趣的话,可以研究一下用TBits类或集合表示二进制数。
      

  12.   

    把 111 111 11 先 >> 8位  在 << 8位 然后和 110 111 10  按位或 不知道 对不对