很有意思的算法

题目:

设计一个函数,接受两个参数,一个为结构体尺寸,一个为对齐字节数,返回对齐后的结构体所占尺寸(首地址偏移量)。

分析:

如果是对8字节对齐,6字节的结构体占用8字节,16字节的结构体占用16字节。第一想法是下面逻辑:

if(!structSize%alignNum){
	return (int)(structSize/alignNum)+1;
}
else{
	return (int)(structSize/alignNum);
}

另外这个逻辑和浮点数的四舍五入很类似

return (int)(floatVal+0.5);

所以最简洁写法如下:

return ((int)(structSize+alignNum-1)/alignNum)*alignNum;
posted @ 2014-04-18 16:12  ssp1024  阅读(151)  评论(0编辑  收藏  举报