无意见需要用到这样一个函数,便整理了一下,当然,方法有很多种,如果有更好的,欢迎拍砖!
// // Bit.cpp : bitset用法 —— 修改一个字节的任意bit位 // 2010-09-05 by Koma #include "stdafx.h" #include <afx.h> #include <bitset> #include <iostream> using namespace std; /************************************************************************ 函数作用: 更改一个字节的bit值 参数说明: szTemp 原字节内容 nPos 位置,只能是0-7 (从右往左) nValue 位值,只能是0/1 返 回 值: 无 备注信息: 2010-09-05 by Koma ************************************************************************/ void SetBitValue(char & szTemp,const int nPos,const int nValue) { ASSERT( nPos<8 && nPos >= 0); // 下标位只能是0-7 if( nValue == 1) szTemp |= 1UL << nPos; // 将nPos的bit位设置为1,其他位不变 else if(nValue == 0) szTemp &= ~(1UL<<nPos); // 将nPos的bit位设置为0,其他位不变 else ASSERT(FALSE); // 否则报错! } /************************************************************************ 函数作用: main入口函数 参数说明: 无 返 回 值: 无 备注信息: 2010-09-05 by Koma ************************************************************************/ int main( ) { char cTemp = 'A'; bool b; int i; bitset<8> b1(cTemp); cout << "修改bit位之前为: ( "<< b1 << " )."<<endl; for ( i = 0 ; i < 8 ; i++ ) { b = b1[ i ]; cout << " 第 "<< i << " 个bit为值为 " << b << "/n"; } // 修改bit位值 SetBitValue(cTemp,0,1); SetBitValue(cTemp,1,1); SetBitValue(cTemp,2,1); SetBitValue(cTemp,3,1); SetBitValue(cTemp,4,1); bitset<8> b2(cTemp); cout << "修改bit位之后为:: ( "<< b2 << " )."<< endl; for ( i = 0 ; i < 8 ; i++ ) { b = b2[ i ]; cout << " 第 "<< i << " 个bit为值为 " << b << "/n"; } return 0; } // end of file Bit.cpp //
运行结果: