我需要想出一个函数,它需要一个char位和一个位的索引,并隔离包含该位的1的字符串。在一个字符中分隔1的字符串
即
char isolate(unsigned char arg, int i);
例如:
分离物(221,2)将返回图28(11011101 >>> 00011100)
分离物(221,6)将返回192(11011101 >>> 1100000)
查找表似乎是一个笨拙的解决方案,因为它需要〜256 * 8 = 2048个条目。
我想检查到索引的左侧和右侧每个个体位:
char isolate(char arg, int i)
{
char result=0;
char mask = 1<<i;
for(char mask = 1<<i; arg & mask != 0; mask>>=1)
result |= mask;
for(char mask = 1<<i; arg & mask != 0; mask<<=1)
result |= mask;
return result;
}
但它也似乎有点难看。我怎么能做得比这更好?
你的提议和问题陈述+例子似乎告诉不同的故事。请您在后置条件下展开。 – 2013-03-24 21:52:28
我改变了格式。我猜这很混乱。 – QuarterlyQuotaOfQuotes 2013-03-24 22:04:22