我需要想出一個函數,它需要一個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