任何人都可以解释这是如何工作的(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)