写出函数中缺失的部分,使得函数返回值为一个整数,该整数的第i位和m的第i位相同,其他位和n相同。请使用【一行代码】补全bitManipulation1函数使得程序能达到上述的功能#include <iostream>
using namespace std;
int bitManipulation1(int n, int m, int i) {// 在此处补充你的代码}
int main() {
int n, m, i, t;
cin >> t;
while (t--) {
cin >> n >> m >> i;
cout << bitManipulation1(n, m, i) << endl;
}
return 0;
}输入第一行是整数 t,表示测试组数。每组测试数据包含一行,是三个整数 n, m 和 i (0<=i<=31)输出对每组输入数据,每行输出整型变量n变化后的结果样例输入1
1 2 1样例输出3提示二进制的最右边是第0位
1 回答
![?](http://img1.sycdn.imooc.com/54584cfb0001308402200220-100-100.jpg)
asd8532
TA贡献143条经验 获得超187个赞
用&运算符
例如:得出1101 0011的第5位,
1101 0011&(1<<5)即可
#define SZ_UINT sizeof(unsigned int) class Bitfield { protected: unsigned int *pField_; unsigned int uBitCount_; public: Bitfield (int bc); ~Bitfield (); // 指定bit位为1 int set (int bit); // 返回bit位值 int get (int bit); // 指定bit位为0 int reset (int bit); }; Bitfield::Bitfield (int bc) { uBitCount_ = bc; pField_ = (unsigned int*) malloc(((int) ceil(bc/SZ_UINT*8))); } Bitfield::~Bitfield () { if (pField_) free(pField_); } int Bitfield::set (int bit) { if (bit >= uBitCount_ || !pField_) return -1; pField_[bit/SZ_UINT] |= (0x00000001 << (bit%(SZ_UINT*8)-1)); return 0; } int Bitfield::reset (int bit) { if (bit >= uBitCount_ || !pField_) return -1; pField_[bit/SZ_UINT] &= ~(0x00000001 << (bit%(SZ_UINT*8)-1)); return 0; } int Bitfield::get (int bit) { if (bit >= uBitCount_ || !pField_) return -1; return (pField_[bit/SZ_UINT] & (0x00000001 << (bit%(SZ_UINT*8)-1)) ? 1 : 0); }
- 1 回答
- 0 关注
- 2591 浏览
添加回答
举报
0/150
提交
取消