C语言里的位域(一)

时间:2013-03-10 12:10:02  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:31&url=http%3A%2F%2Fwww.zxbc.cn%2Fhtml%2F20080922%2F65943.html&ref=http%3A%2F%2Fwww.alimama.com%2Fmembersvc%2Fzone%2F3005868.htm&frm=0&cc=247&ga_vid=458100432.1222835733&ga_sid=1222835733&ga_hid=1672495383&flash=9.0.124.0&u_h=768&u_w=1024&u_ah=738&u_aw=1024&u_cd=32&u_tz=480&u_java=true" frameBorder=0 width=300 scrolling=no height=250 allowTransparency&g...
  正文:

2.字节对齐

回到上面留下的字节数的问题,即sizeof(BitSeg1)的结果为4个字节。按理来说,BitSeg1的有效位数是7位,但为了程序的快速运行,一个重要的手段是减少内存的读写次数,所以一样的处理器都是以字节的倍数将内存中的数据读到寄存器中,所以程序把数据以字节的形式对齐了就可以有效的减少内存的读写时间,你可想想要处理器只读内存中的7位是如何做的,一次一个位?那倒不如一次读8位。

在做字节对齐的时候也是有规则的,在32位的系统(第二电脑网http://www.002pc.com)里,编译器会按类型进行字节的对齐,以它们的位宽为基准,在VC下:

char
  偏移量必须为sizeof(char)即1的倍数

int
  偏移量必须为sizeof(int)即4的倍数

float
  偏移量必须为sizeof(float)即4的倍数

long
  偏移量必须为sizeof(long)即4的倍数

double
  偏移量必须为sizeof(double)即8的


C语言里的位域(一)》由第二电脑网原创提供,转载请注明:http://www.002pc.com/xitongbunengkaiji/22726.html


关于《C语言里的位域(一)》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td