[解決済み】ビット単位の補数演算子(~チルダ)はどのように機能しますか?
2022-04-19 04:16:43
質問
なぜ ~2 は -3 になるのか? どのようにして
~
演算子はどのような働きをするのですか?
どのように解決するのですか?
負の数は 2の補数 の正の対応するものです。例えば、-2を2の補数で表すと、次のようになります。(8ビット)
1111 1110
これは、ある数を2進法で表現し、その補数(すべてのビットを反転させる)をとり、1を足すことで得られるものです。2は0000 0010で始まり、ビットを反転させると1111 1101となります。1を足すと上のようになります。最初のビットは符号ビットで、マイナスを意味する。
では、「~2=-3」がどのようにして得られるのかを見てみましょう。
ここで再び2。
0000 0010
単純にすべてのビットを反転させると、こうなる。
1111 1101
では、-3は2の補数ではどうなるのでしょうか。正の3である0000 0011から始めて、すべてのビットを1111 1100に反転させ、1を加えて負の値(-3)である1111 1101とします。
つまり、2のビットを単純に反転させれば、-3の2の補数表現が得られるというわけだ。
補数演算子(~)はビットをはじくだけです。このビットをどう解釈するかは機械次第です。
関連
-
[解決済み] Verilogクエスチョンマーク(?)演算子
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] Pythonにおけるincrementとdecrement演算子の挙動
-
[解決済み] C# 6.0のクエスチョンマークとドット演算子「?」の意味は?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】ビットシフト(bit-shift)演算子とは、どのようなもので、どのように機能するのですか?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み】なぜJavaの+=, -=, *=, /=複合代入演算子はキャスティングを必要としないのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン