c++ - `(x+7)&~7`,把x增大为稍大于x的8的倍数。这怎么理解?
阿神
阿神 2017-04-17 15:23:27
0
1
618

stl源码剖析的第61页有上面的位运算,不过我不了解,求证明。

阿神
阿神

闭关修行中......

모든 응답(1)
PHPzhong

7 = 00000111b
&는 비트 AND
이므로 x&7에는 x의 하위 비트 3개만 있습니다.


~7 = 11111000b

그래서 x&~7은 x의 하위 3비트를 0으로 설정하고 이는 8의 배수입니다.


(x n-1)&(n-1), x를 n의 배수보다 약간 크게 늘립니다. 단, n은 2^m이어야 합니다.
2^m-1에만 다음 유형이 있으므로 상위 비트는 1이어야 하고 하위 비트는 0이어야 합니다. , 교차되지 않습니다.

서브넷 마스크 서브넷 마스크

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿