关于按位逻辑与运算

ron_xin 2007-04-25 10:15:12
11011110和11111111按位逻辑与运算后结果为11011110 怎么得到的?
...全文
3937 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
唐伯虎傻画画 2011-11-01
  • 打赏
  • 举报
回复
把 111 111 11 先 >> 8位 在 << 8位 然后和 110 111 10 按位或 不知道 对不对
pk10125 2011-10-11
  • 打赏
  • 举报
回复
按位逻辑与规则:
相同的数字运算为1;不同的数字运算为0
hezhuz 2009-01-23
  • 打赏
  • 举报
回复
看完各种回复,获益良多啊......
yuyyu2016 2008-06-28
  • 打赏
  • 举报
回复
ding
HsWong 2007-04-25
  • 打赏
  • 举报
回复
十进制转二进制串
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;
HsWong 2007-04-25
  • 打赏
  • 举报
回复
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

lihuasoft 2007-04-25
  • 打赏
  • 举报
回复
知道你的意思了。

一、往前看一下我刚刚写的一个小函数(可以再加一个参数“逻辑运算符”,扩充为可以进行各种逻辑运算的)。

二、或者:222 and 255 = 222之后,把222这个结果转换为二进制字符串表示。前面已说了如何转换(一是我给了一个网址,二是可以用位运算符,三,网上估计有这样的现成函数,自己写也可以)
ron_xin 2007-04-25
  • 打赏
  • 举报
回复
11011110和11111111都是二进制数(十进制为222和255), 我想要的是11011110 and 11111111 的结果为11011110, 而不是222 and 255 的结果222
lihuasoft 2007-04-25
  • 打赏
  • 举报
回复
写了一个小函数,如果楼主用得上,就用。

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;
lihuasoft 2007-04-25
  • 打赏
  • 举报
回复
嗯,估计是。
何鲁青 2007-04-25
  • 打赏
  • 举报
回复
我觉得又是一个数据显示类型的问题。
chenzhuo 2007-04-25
  • 打赏
  • 举报
回复
if $DE and $FF = $DE then ShowMessage('OK');
lihuasoft 2007-04-25
  • 打赏
  • 举报
回复
参考一下:http://rabbitfox.blog.sohu.com/36987625.html

另外可以直接用位运算符写代码。

没太搞明白楼主想要什么,猜测着提供一些信息。
lihuasoft 2007-04-25
  • 打赏
  • 举报
回复
var
A,B,C : Byte;
begin
A := 222;//每个二进位用二进制表示就是11011110
B := 255;
C := A and B;
Showmessage(IntToStr(C));//222
end;

你不会是想得到11011110这样的字符串吧?其实也很简单的
ron_xin 2007-04-25
  • 打赏
  • 举报
回复
编程实现两个数按位与,觉得是用AND运算吧`~可是得不到11011110这个结果
  • 打赏
  • 举报
回复
逻辑与运算的规则是按位对应,只有一种情况结果为1,就是对应的2位都为1。
lihuasoft 2007-04-25
  • 打赏
  • 举报
回复
想问什么?与门、非门、与非门...问这些?还是怎么编程实现两个数按位与?
ron_xin 2007-04-25
  • 打赏
  • 举报
回复
本来是想给多点分给参与的人`~但是分不多~~顺便问一问如果给贴加分?
ron_xin 2007-04-25
  • 打赏
  • 举报
回复
谢谢各位的积极参与!结贴了~~
lihuasoft 2007-04-25
  • 打赏
  • 举报
回复
另外,如果楼主有兴趣的话,可以研究一下用TBits类或集合表示二进制数。
加载更多回复(1)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧