请教!
写一函数,将一个n位二进制数中的奇数位提取出来,
从左往右,是1,3,5,7……n-1;
思路是有了,但是很麻烦.先得计算屏幕码!再进行&运算;如果n是8,16,32,64。。。。。。的话,那么就得每次计算屏幕码!有什么好的方法计算屏幕码吗?
[解决办法]
int src, dst;
src = 11;
dst = 0;
for(i=0; i <(((n))); i++)
{
if ((i%2) == 0) continue;
dst = dst | ((src & (1 < <i)) > > (i/2) )
}
你改改应该可以
[解决办法]
int main()
{
string strbin;
cout < < "please input the binary num : ";
cin > > strbin;
unsigned int tmp = 0;
vector <bool> bitvec;
for (string::const_iterator cit = strbin.begin(); cit != strbin.end(); ++cit)
{
if ((*cit) == '0 ')tmp = 0;
elsetmp = 1;
bitvec.push_back(tmp);
}
for (unsigned int i = 0; i < bitvec.size(); ++i)
{
if (i % 2 == 0)
{
cout < < "the " < < i+1 < < "position is : " < < (unsigned int)(bitvec[i]) < < endl;
}
}
return 0;
}
[解决办法]
int i, n;
char tmp[32]={0};
itoa(i, tmp, 2); //将数据转化为2进制串
然后,
使用n计算数组下标吧······
[解决办法]
楼上说的对,但是怎么做才能构造出一个偶数位为0,奇数位为1的数,
想了半天没想想来,郁闷...
==============
int mask=0, i;
for(i=0; i <16; i++){mask < <= 2; mask |= 1;}