请教两条语句?

kristy811203 2006-09-20 02:31:31
qx:=qx xor 1234567890;
qx:=qx shr 10;
for i:=0 to 6 do
if((1 shl i) and qx)<>0

其中 qx是一个字段(权限),比如说qx=1234697938,我想知道异或执行后的结果,还有右移位之后的结果,以及if判断的结果,谢谢!!!
...全文
177 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuminghua 2006-09-21
  • 打赏
  • 举报
回复
xor 异或运算,将两边的数转换成二进制数,再按位数进行异或
shr 右移,也是转成二进制,右移N位,低位舍去高位补0
shl 左移N位,低位补0高位舍去
and 与运算
光明山人 2006-09-21
  • 打赏
  • 举报
回复
变成二进制后算:
qx = 1234697938 = 1001001100101111111111011010010;

qx:=qx xor 1234567890;
与 1234567890 (1001001100101100000001011010010) 异或,也就是相同的位变成0,不同的位变成1:
1001001100101111111111011010010
1001001100101100000001011010010
--------------------------------
0000000000000011111110000000000

qx:=qx shr 10;
然后右移10位,变成:
1111111

for i:=0 to 6 do
if((1 shl i) and qx)<>0
看看低七位中每一位是否为1,当然这个例子中都为1。

下课。
kristy811203 2006-09-20
  • 打赏
  • 举报
回复
我想知道是怎么是算的
zhuminghua 2006-09-20
  • 打赏
  • 举报
回复
想知道执行后的结果?你自己不会在电脑上试啊?

16,746

社区成员

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

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