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);
本文详细介绍了如何优化32位RGB色彩到16位RGB色彩的转换过程,通过位运算实现了高效的色彩转换。优化后的代码减少了冗余计算,提高了执行效率。
9326

被折叠的 条评论
为什么被折叠?



