常用的Bit位操作 记录

来源:互联网 发布:cdma是什么网络 编辑:程序博客网 时间:2024/05/01 16:55

常用的Bit位操作 记录

// 检测某一位是否为1#ifndef EX_BIT_ENABLED#define EX_BIT_ENABLED( dword, bit ) ( ((dword) & ( 0x01 << bit)) != 0 )#endif// 设置某一位为 1 #ifndef EX_SET_BIT_ENABLED#define EX_SET_BIT_ENABLED( dword, bit ) ( (dword) |= ( 0x01 << bit ))#endif// 设置某一位为 0#ifndef EX_SET_BIT_UNENABLED#define EX_SET_BIT_UNENABLED( dword, bit ) (dword &= ~( 0x01 << bit ))#endif// 某一位去翻#ifndef EX_REVERSE_BIT#define EX_REVERSE_BIT( dword, bit )\if( EX_BIT_ENABLED(dword,bit) )\{\EX_SET_BIT_UNENABLED(dword,bit);\}\else\{\EX_SET_BIT_ENABLED( dword,bit );\}#endif



附上测试代码

int main(){// testing EX_BIT_ENABLEDlong value = 32;bool ret = EX_BIT_ENABLED( value, 5 );ret = EX_BIT_ENABLED( value, 4 );EX_SET_BIT_ENABLED( value, 4 );ret = EX_BIT_ENABLED( value, 4 );EX_SET_BIT_UNENABLED( value, 4 );ret = EX_BIT_ENABLED( value, 4 );EX_REVERSE_BIT( value, 4 )ret = EX_BIT_ENABLED( value, 4 );EX_REVERSE_BIT( value, 4 )ret = EX_BIT_ENABLED( value, 4 );return 0;}



0 0