常用宏定义函数


#define bitn(n)  (1<<(n))
#define mask(n)  (~(1<<(n)))

#define vbitn(var,n) ((var)&(1<<(n)))
#define boolbit(var,n) (vbitn(var,n)?True:False)

#define setbit(var,n) ((var)|(1<<(n)))
#define invbit(var,n) ( vbitn(var,n)?(var&mask((n))):((var)|bitn((n))) )

#define Ver_ID(a,b,c,d) ( (U32)( (((U32)(a)&0xff)<<24)|(((U32)(b)&0xff)<<16)|(((U32)(c)&0xff)<<8)|(((U32)(d)&0xff)<<0) ) )
#define Ver_Str(host,sub,beta_ok) "Ver:"#host"."#sub##beta_ok
//#define Make_Ver(a,b,c,d) "Ver:"#a"."#b"."#c"."#d


//--------------------------------------------------------------------------------------------
//MAKE_RGB888,24位,8--11111111, 8--11111111, 8--11111111
//#define MAKE_RGB888(r,g,b) ((U32)r<<16)|((U32)g<<8)|((U32)b)
#define RGB888(r,g,b) ((U32)r<<16)|((U32)g<<8)|((U32)b)
#define rgb888(r,g,b) ((U32)r<<16)|((U32)g<<8)|((U32)b)
#define Get888R(rgb) (U8)((rgb>>16) & 0xff)
#define Get888G(rgb) (U8)((rgb>>8) & 0xff)
#define Get888B(rgb) (U8)((rgb) & 0xff)


//MAKE_RGB565,16位,5--11111, 6--111111, 5--11111
//#define MAKE_RGB565(r,g,b) (U16)((((U16)r&0xf8)<<8)|(((U16)g&0xfc)<<3)|(((U16)b&0xf8)>>3))
#define RGB565(r,g,b) (U16)((((U16)r&0xf8)<<8)|(((U16)g&0xfc)<<3)|(((U16)b&0xf8)>>3))
#define rgb565(r,g,b) (U16)((((U16)r&0xf8)<<8)|(((U16)g&0xfc)<<3)|(((U16)b&0xf8)>>3))
#define Get565R(rgb) (U8)((rgb>>16) & 0xff)
#define Get565G(rgb) (U8)((rgb>>8) & 0xff)
#define Get565B(rgb) (U8)((rgb) & 0xff)

 

//--------------------------------------------------------------------------------------------
#define RotateMLefts(data,bits,bitwidth) ((bits)>=(bitwidth))?               /
                                        0:                                   /
                                        (                                    /
                                            (                                /
                                          (                            /
                                           (data)<<abs(bits)        /
                                          )                            /
                             |         /
                                          (                            /
                                                 (data)>>(abs(bitwidth)-abs(bits))  /
                                          )                            /
                                            )                                /
                                        )                                   
#define RotateMRights(data,bits,bitwidth) ((bits)>=(bitwidth))?               /
                                        0:                                   /
                                        (                                    /
                                            (                                /
                                          (                            /
                                           (data)>>abs(bits)        /
                                          )                            /
                             |         /
                                          (                            /
                                                 (data)<<(abs(bitwidth)-abs(bits))  /
                                          )                            /
                                            )                                /
                                        )                                   
//-------------------------------------------------------------------------------------------- 
//--------------------------------------------------------------------------------------------
#define RotateMLefts(data,bits,bitwidth) ((bits)>=(bitwidth))? 0: ((((data)<<abs(bits))|((data)>>(abs(bitwidth)-abs(bits)))))
#define RotateMRights(data,bits,bitwidth) ((bits)>=(bitwidth))? 0: ((((data)>>abs(bits))|((data)<<(abs(bitwidth)-abs(bits)))))
//-------------------------------------------------------------------------------------------- 
//移动1位
#define RotateLeft(data,bitwidth) (((data)<<1)|((data)>>(abs(bitwidth)-1)))
#define RotateRight(data,bitwidth) (((data)>>1)|((data)<<(abs(bitwidth)-1)))
#define RotateMoveBit(data,bitwidth) (((bitwidth)>=0?RotateLeft(data,bitwidth):RotateRight(data,bitwidth)))

//移动多位
#define RotateLefts(data,bits,bitwidth) (((data)<<abs(bits))|((data)>>abs((abs(bitwidth)-abs(bits)))))
#define RotateRights(data,bits,bitwidth) (((data)>>abs(bits))|((data)<<abs((abs(bitwidth)-abs(bits)))))
#define RotateMoves(data,bits,bitwidth) (((bits)>=0?(((data)<<abs(bits))|((data)>>abs((abs(bitwidth)-abs(bits))))):(((data)>>abs(bits))|((data)<<abs((abs(bitwidth)-abs(bits)))))))


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值