问一个if (Style and $1) <> 0 then 代表什么意思(50分)

  • 主题发起人 主题发起人 holyszq
  • 开始时间 开始时间
H

holyszq

Unregistered / Unconfirmed
GUEST, unregistred user!
function SetFontStyle(Style: Integer): TFontStyles;
begin
Result := [];
if (Style and $1) &lt;&gt; 0 then
Result := Result + [fsItalic];
if (Style and $2) &lt;&gt; 0 then
Result := Result + [fsBold];
if (Style and $4) &lt;&gt; 0 then
Result := Result + [fsUnderLine];
if (Style and $8) &lt;&gt; 0 then
Result := Result + [fsStrikeOut];
end;

这里if (Style and $1) &lt;&gt; 0 then 代表什么意思? 帮忙解释一下谢谢拉!
 
位与运算的结果不为0则....
整型数Style与十六进制常量进行与运算的意思,即二个数值的每一位相与得到一个结果值
详见汇编语言相关内容
 
判断Style 里是否包含$1
Style 应该为2的n次幂的数字的和
 
对于整数,在内存中的存储二进制的.
下面各个&quot;位&quot;上的1表示下面的数值:
1 1 1 1
8 4 2 1
显然,你的$1,$2,$4,$8刚好对应了0001, 0010, 0100, 1000
再使用and位操作,其实就是获取相应1位置上的值是否为0

你的那句话就是看这个问题。

但是这个问题要扩展一下才好解释完整。你要清楚Style是如何存储的。
Style是Windows定义的,其实其存储方式和Delphi中的集合是一个概念。
一个整数是32位,每一位上代表一个信息,表示是否包含那个元素。

所以,你这段程序,其实就是类似判断一个Style的集合中,是否包含4种元素。

Good Luck!
 

Similar threads

后退
顶部