delphi中 位操作 and的问题
sendstr1[5]:=(zhengrotnumand$ff000000)shr24;sendstr1[5]:=(zhengrotnumand$00ff0000)shr...
sendstr1[5] :=(zhengrotnum and $ff000000) shr 24;
sendstr1[5] := (zhengrotnum and $00ff0000) shr 16;
sendstr1[6] := (zhengrotnum and $0000ff00) shr 8;
sendstr1[7] := (zhengrotnum and $000000ff) shr 0;
其中zhengrotnum 等于5,我就不明白了,常数5是怎么与16进制数进行与操作的,忘大神解释一下,如果5可以与 $ff000000进行与操作,结果是什么呢。
小弟刚刚接触Delphi。
zhengrotnum : integer; 展开
sendstr1[5] := (zhengrotnum and $00ff0000) shr 16;
sendstr1[6] := (zhengrotnum and $0000ff00) shr 8;
sendstr1[7] := (zhengrotnum and $000000ff) shr 0;
其中zhengrotnum 等于5,我就不明白了,常数5是怎么与16进制数进行与操作的,忘大神解释一下,如果5可以与 $ff000000进行与操作,结果是什么呢。
小弟刚刚接触Delphi。
zhengrotnum : integer; 展开
1个回答
展开全部
程序、数据都在内存中,为什么常数不能进行与操作?难道常数不用放内存中就能用了?此外,CPU内还有寄存器,不少数据操作还要把数据装入寄存器去完成,这些都是用高级语言编程看不到的,也无需关心的,编译器会帮你做这样的事。
追问
上面贴出来的是源程序,我得闹明白这几行输出的是什么数据,然后我用其它的高级语言编辑程序,既然你知道,麻烦给我说下,结果是什么,delphi我根本不会用
追答
and 是按位与操作,这个不用说了吧。shr 24 是把与操作的结果右移24位,左边补0,右边移出的丢掉。这样说应该清楚了吧?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询