我讀的C-FAQ問題沒有:20.8,基本上涉及與比特串:解釋
http://c-faq.com/misc/bitsets.html
一個定義的宏看起來是這樣的:
#define BITNSLOTS(nb) ((nb + CHAR_BIT - 1)/CHAR_BIT)
這個宏是否用來計算char數組中元素(或插槽)的數量(每個插槽= 8位)?我不確定這個宏是做什麼的,特別是「+ CHAR_BIT -1/CHAR_BIT」的目的是什麼。任何線索將不勝感激!
我讀的C-FAQ問題沒有:20.8,基本上涉及與比特串:解釋
http://c-faq.com/misc/bitsets.html
一個定義的宏看起來是這樣的:
#define BITNSLOTS(nb) ((nb + CHAR_BIT - 1)/CHAR_BIT)
這個宏是否用來計算char數組中元素(或插槽)的數量(每個插槽= 8位)?我不確定這個宏是做什麼的,特別是「+ CHAR_BIT -1/CHAR_BIT」的目的是什麼。任何線索將不勝感激!
是的,它會計算需要多少個char
來保存位。另外的東西是讓它四捨五入。
如果nb小於CHAR_BIT,則至少需要一個字符。
還記得這個劃分是整數除法:沒有「......和八分之三」。假設要分組爲大小爲6的槽(耶...我知道CHAR_BIT
是8個或更多)
(1 + 6 - 1)/6 == (6/6) == 1
(5 + 6 - 1)/6 == (10/6) == 1
(6 + 6 - 1)/6 == (11/6) == 1
(7 + 6 - 1)/6 == (12/6) == 2
感謝您的詳細解答! – maxpayne