찾다

 >  Q&A  >  본문

c++ - `(x+7)&~7`,把x增大为稍大于x的8的倍数。这怎么理解?

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

阿神阿神2813일 전612

모든 응답(1)나는 대답할 것이다

  • PHPz

    PHPz2017-04-17 15:25:27

    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이어야 합니다. , 교차되지 않습니다.

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

    회신하다
    0
  • 취소회신하다