解释

2011-09-21 54 views
1

我读的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”的目的是什么。任何线索将不胜感激!

回答

3

是的,它会计算需要多少个char来保存位。另外的东西是让它四舍五入。

3
  • 这是一个收尾的方法。

如果nb小于CHAR_BIT,则至少需要一个字符。

2

还记得这个划分是整数除法:没有“......和八分之三”。假设要分组为大小为6的槽(耶...我知道CHAR_BIT是8个或更多)

  • 1元素:1个槽:(1 + 6 - 1)/6 == (6/6) == 1
  • ...
  • 5个元素: 1个槽:(5 + 6 - 1)/6 == (10/6) == 1
  • 6要素:1个槽:(6 + 6 - 1)/6 == (11/6) == 1
  • 7元素:2个槽:(7 + 6 - 1)/6 == (12/6) == 2
  • ...
+0

感谢您的详细解答! – maxpayne