我读的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