Delphi中可以定义位域吗?(50分)

  • 主题发起人 主题发起人 vagabond1998
  • 开始时间 开始时间
V

vagabond1998

Unregistered / Unconfirmed
GUEST, unregistred user!
就象c中的那样:
struct {
byte i : 3;
byte j :5;
}
 
使用TBit对象对位进行操作
有如下属性
property Bits[Index: Integer]: Boolean
可以取得位的状态.
如果是要取得其他系统的参数可以使用屏蔽操作来
达到
 
delphi中对位的操作有and,or,shr,shl等几个操作符和tbits类,一般来说用操作符
就可以了。
 
Delphi可以定义类似于C的位域说明,它是以记录的形式模拟的,如:
Bityand= Record
bit0: Byte;
bit1: Byte;
....
Bitn: Byte;
end;
其中,n>0.
 
对不起,前段时间有事,没有及时反馈。
多谢各位的回答。
另外,Jams网友,能否更具体地解释一下您所
提供的方法。
比如,我希望把一个字节的3个bit用来保存字段A,
用5个bit保存字段B ,用您的方法,该怎么表示呢?
谢谢!
 
如果在一个字节中保存几个位域
必须使用屏蔽操作
例如一个字节的低三位表示A 高5位表示B 字节为BY
A:=BY and $07
//取得低三位
//$07------>00000111

B:=((BY and $f8) div $8)
^^^^^^^^^^ ^^^^^
// 取得高5位 右移3位
//$f8------>11111000
//$8 ------>00001000

 
多人接受答案了。
 
后退
顶部