我在书中看到一句程序不明?请大家帮忙!!! a为int64型, 为什么会出现a:=a or (1 shl I)??

qqh1980 2003-10-21 12:09:08
下面程序中a为int64型,为什么会出现a:=a or (1 shl I);,它是什么意思?结果又是什么??
procedure TUserManageForm.BitBtn3Click(Sender: TObject);
var i: integer; a: int64;
begin
a := 0;
for i := 0 to qx.Items.Count - 1 do
if qx.Checked[i] then
a := a or (1 shl i); //这句是什么意思?结果又是什么??
a := a shl 10;
a := a xor 1234567890;
if adodm.tuser.Locate('用户编号', intptr(man.Selected.Data^).id, []) then
begin
adodm.tuser.Edit;
adodm.tuser.FieldByName('用户权限').Asstring := inttostr(a);
adodm.tuser.Post;
intptr(man.Selected.Data^).qx := a;
end
else
showmessage('没有找到,请重新输入!');
end;
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenkandy 2003-10-21
  • 打赏
  • 举报
回复
a or (1 shl i);
意思是:
先用i 進行邏輯左移動一位作業
再用得到的值和a 逕行或運算.
作業過程自動轉為2進值逕行的
hiflower 2003-10-21
  • 打赏
  • 举报
回复
看看帮助,or 也有 bitwisw or 的功能,对整数进行按位“或”
yzykjh 2003-10-21
  • 打赏
  • 举报
回复
//shl 是逻辑操作中的左移操作
//(1 shl i) i左移1位

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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