gameloft 有道笔试题是这样的:
有32位的RGB色彩,保存方式如下:
RED = 0X00FF0000;
GREEN = 0X0000FF00;
BULE= 0X000000FF;
实现一个函数将此32位RGB转换为16位的RGB色彩,其中(REG, GREEN, BLUE) 分别为( 5, 6, 5)
另外:对于色彩一般是舍弃低位保留高位。
unsigned int ConvertRGB32To16(unsigned int nSrcRGB)
{
unsigned int Red = (nSrcRGB & 0x00F80000) >> 8 ;
unsigned int Green = (nSrcRGB & 0x0000FC00) >> 5 ;
unsigned int Blue = (nSrcRGB & 0x000000F8) >> 3;
return Red | Green | Blue;
}
/
int a = ret % 32;
优化:
int a = ret^((ret>>5)<<5);