1

タイトルがすべてを物語っています: マイナス 1 とチルダ (1 の補数) ゼロの違いは何ですか?

この質問は、すべてのビットが設定されるビット マスクを指定する最良の方法についての議論中に出てきました。次のうちどれが良いですか?

int func(int value, int mask = -1) {
    return (value & mask);
}

また

int func(int value, int mask = ~0) {
    return (value & mask);
}

それが逆になる他の用途はありますか?

更新: stackoverflow.com/q/809227/34509で、このトピックに関する同様の議論がありましたが 、以前の調査中に見逃していました。指摘してくれた Johannes Schaub に感謝します。

4

3 に答える 3

8

最初のバリアントは、必ずしも使用されるとは限らない、負の数の 2 の補数表現に依存しています。1の補数も使用できます...または他のエンコーディング。私の投票は2番目のアプローチです

于 2011-07-18T14:16:24.337 に答える
3

2 番目の例は、何をテストしようとしているのかについてより明確です。

于 2011-07-18T14:15:07.633 に答える
1

どちらも同じです。それ以外は、警告なし-1でうまくいきます。unsigned int

于 2011-07-18T14:17:03.353 に答える