答えて
すべてのビットを2の補数の整数に設定すると、-1が得られます。
私は2の補数を使用して(非常に小さい)、2ビット符号付き整数で示してみましょう:
00 → 0
01 → 1
10 → −2
11 → −1
これはわずか1から-2オーバーフローを越え、0からカウントアップし、で終わる-1 。ご覧のように、0になるすべてのビットをクリアすると、それらをすべて設定すると、(整数の幅にかかわらず)-1が得られます。
ゼロが実際にあることを
は(というのは本当である以外何のブール演算子や物事は、ビット演算子と同じようにうまく動作しない代わりに-1 1のがあったとして、あなたの心には、BASICを使っている人は、すでにこれを知っていました) PHPの整数型は、32ビット符号付き整数ではなく、単一ビットであるように、32個のゼロビットで表現される:0000 0000 0000 0000 0000 0000 0000 0000
はそうではないと(-1のtwo's complementもたらすそれらの全てを、反転ビット単位
記号を表す最も左のもの):1111 1111 1111 1111 1111 1111 1111 1111
1つのビットがすべて-1である理由が分からない場合は、自分自身にこれを尋ねてください。それに1を加えるとどうなりますか?回答:オーバーフローし、すべてのビットがゼロです。あなたがそれに1を加えたときにゼロになる数字の名前があります... -1。 –
David、これは2の補数に当てはまりますが、符号ビットや1の補数には当てはまりません(少なくともnaïvelyではない)。いずれのオプションも、コンピュータを親密に知らない人の立場からも同様に説明することができます。 – Joey
は、はいそれが必要、と2の補数システム上、設定されたすべてのビットの数は、-1に等しく、0が未設定のすべてのビットを持っているので、〜そのすべてのビットがセットされています$。
したがって、コードは期待どおりに動作しています。
整数は2の補数形式で格納されます。
このフォームは、アウトライン広告は、次のことができます:
1)保存する番号はそのバイナリ値は
例えば $ valの= 5保存され、その後正の値である場合には、ここで
は$ valがのordiaryバイナリequivlentを含有する5 = 0101 //ビットの数は、具体的2)あなたは、数の負格納されているならば、補数の賛辞Sが格納され、-5言うに依存
ここで最初の$val = -5;
5の2の補数、すなわち、5 + 1
~ 0101 = 1010
tnenの単に1の補数は1
追加して発見されました1010 +
1
-----
1011
この1011は$ valに格納されます。
同様に、$ val = 0; 00の-2 2の補数形式で
equalientであり、あなたは慎重に観察する場合には、最終的に、あなたは、
を求めることができるので、どのように、私は11を表すことができ
〜$ valの=> 11に格納されます?そのバイナリ値は2のcompで-5の値と衝突する1011ですか?
答えは数字を表すのに使用されるビットの数にあります。 2のcomplimwent形式で
n個のビットがあるならば、あなたはそれがない
-2^(n-1) to 2^(n-1) -1 ;
- 1. 列挙操作が実行されない可能性があります
- 2. コレクションが変更されました。列挙操作が実行されない可能性があります
- 3. コレクションが変更されました。列挙操作が実行されない可能性があります
- 4. コレクションが変更されました。列挙操作が実行されない可能性があります
- 5. コレクションが変更されました。列挙操作が実行されない可能性があります
- 6. コレクションが変更された列挙操作が実行されない可能性があります。 Unity
- 7. Delphi DLLがアンロードされていない可能性があります.GDIがまだ割り当てられている可能性があります。
- 8. CoreData - オブジェクトが作成されているか作成されていない可能性があります
- 9. ImageMagickが正しくインストールされていない可能性があります
- 10. Valriableが初期化されていない可能性がありますか?
- 11. ラムダイベントハンドラが宣言されていない可能性がありますか?
- 12. 変数が初期化されていない可能性があります
- 13. タイマーが初期化されていない可能性がありますか?
- 14. phpstorm警告PHP変数が定義されていない可能性があります
- 15. 折り畳まれていない可能性があります。
- 16. Django IntegrityError signup_simplesubscriber.date_createdがNULLでない可能性があります
- 17. ログインが安全でない可能性があります
- 18. IntegrityError:App_userprofile.user_idがNULLでない可能性があります。
- 19. ItemViewがnullでない可能性があります
- 20. 説明できないローカル変数が初期化されていない可能性があります。
- 21. jQueryまたはJavaScriptがロードされている可能性があります
- 22. dropdown要素が現在表示されていないため操作できない可能性があります。
- 23. PhantomJS 2.1.1: "errorMessage": "要素が現在表示されておらず、操作されていない可能性があります。
- 24. SafariでHTMLマークアップが動作していて、Chromeで動作しない可能性があります
- 25. コンパイルエラー:cpumask.h: "and"がマクロパラメータリストに表示されない可能性があります
- 26. メソッド内にあっても変数が初期化されていない可能性があります
- 27. VC++のATL DLLがクラッシュする可能性があります - 32ビット/ 64ビットの問題に関連する可能性があります
- 28. Factory_girlを使用したTimecop:日付の属性がシーケンスされていない可能性があります。
- 29. 拡張機能には格納されていない可能性があります。保存されたプロパティー
- 30. doFilterメソッドが誤解されている可能性があります
から値のみを表すことができます。 2つの補数では、すべての1のビットフィールドは-1です。 http://en.wikipedia.org/wiki/Two%27s_complement – GordonM