検索

ホームページ  >  に質問  >  本文

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

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

阿神阿神2804日前607

全員に返信(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 を x の n の倍数よりわずかに大きくします。ただし、n は 2^m でなければなりません
    2^m-1 のみが型を持つため、上位ビットは 1 でなければならず、下位ビットは 0 でなければなりません。 、交差していません。

    サブネットマスク サブネットマスク

    返事
    0
  • キャンセル返事