/************************************************************************** * 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,就能保证后面的余数的空间有效了。