小编use*_*721的帖子

Bit Hack - 四舍五入到8的倍数

任何人都可以解释这是如何工作的(asz + 7)&〜7; 它将asz舍入到8的下一个更高倍数.

这是很容易看到,〜7产生11111000(8位表示),因此关断最后3位,因此其产生的任何数目是8的倍数.

我的问题是如何在屏蔽[edit]之前将asz添加到7以产生8的下一个更高[end edit]倍数?我试着在纸上写下来

喜欢 :

1 + 7 = 8  = 1|000 (& ~7) -> 1000
2 + 7 = 9  = 1|001 (& ~7) -> 1000
3 + 7 = 10 = 1|010 (& ~7) -> 1000
4 + 7 = 11 = 1|011 (& ~7) -> 1000
5 + 7 = 12 = 1|100 (& ~7) -> 1000
6 + 7 = 13 = 1|101 (& ~7) -> 1000
7 + 7 = 14 …
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation

9
推荐指数
3
解决办法
7600
查看次数

标签 统计

bit-manipulation ×1

c ×1