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

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート