我想了解以下功能,決定一個位是上:在C位移位是我的位?
int isBitISet(char ch, int i)
{
char mask = 1 << i ;
return mask & ch ;
}
首先,爲什麼會一個char?對於ch=abcdefgh
和i=5
該函數假設返回右邊第五位(?),d
。所以mask=00000001<<5=00100000
和00100000 & abcdefgh = 00c00000
。
請你解釋一下我們如何得到字符,我們可以在沒有任何鑄造的情況下完成所有這些轉換?爲什麼我們沒有得到第五位,爲什麼返回的值真的是指示位是否打開?
編輯:'abcdefg'只是位的符號,我並不是想要在char類型中表示一個字符串。
我曾經認爲char爲'a'
而不是實際的8位,所以這可能是我第一個問題的答案。
我想你誤解的東西...在C'char'爲8位,並且只能有0和255之間的值。 (用於無符號)或-128至127(用於簽名)。一個'char'永遠不會有'abcdefgh'這樣的值。也許你正在考慮'char *'和字符串?在這種情況下,你不能使用位掩碼。 – 2012-07-16 08:28:12
'abcdefg'只是這些位的符號,我不是故意以字符類型發送字符串。 – Numerator 2012-07-16 08:29:49
'h'被認爲是第0位,c是第5位。代碼是絕對好的。 – 2012-07-16 08:29:56