编写一个函数 对一个16位的二进制取出它的奇数位
#include <iostream>
using namespace std;
void extracter(int number)
{
for(int i = 0; i < 16; i += 2)
{
// 0x8000: 1000,0000,0000,0000
if((0x8000 >> i) & number)
cout << '1';
else
cout << '0';
}
}
int main()
{
// 38566: 1001,0110,1010,0110
// 打出: 1001,1101
extracter(38566);
}
上面那是个从左取的,我再补充个从右取的:
#include <iostream>
#include <string>
using namespace std;
string extracter(int number)
{
string bit;
for(int i = 0; i < 16; i += 2)
{
// 1: 0000,0000,0000,0001
if((1 << i) & number)
bit.insert(0, "1");
else
bit.insert(0, "0");
}
return bit;
}
int main()
{
string bit;
// 38566: 1001,0110,1010,0110
// 打出: 0110,0010
bit = extracter(38566);
cout << bit;
}