/**************************************************************************
* 32 对齐算法
* 说明:
* 这是在QQ群里看到有人问这个问题,于是思考了一下,并回答了这个问题。
*
* 2016-4-15 深圳 南山平山村 曾剑锋
*************************************************************************/
一、32 对齐算法:
#define ALIGNED32(x) ((x) & ~0x1F)
unsigned int screen_size = ALIGNED32(1280+31) * 800 * 24;
二、提问:
为什么屏幕宽度1280要+31,再位与~0x1F?
三、解释:
1. 如果屏幕宽度(或者说高)正好是32的倍数,加不加31效果一样;
2. 而如果不是32的倍数,又要保证32对齐,就要增加对应的空间来满足32对齐。
3. 相当于对1280/32,如果没有余数,没必要+31,如果有余数,那么+31,就能保证后面的余数的空间有效了。