[解決済み] ~x + ~y == ~(x + y)は常に偽?
2022-04-27 17:51:08
質問
このコードは常にfalseと評価されるのでしょうか?どちらの変数も2の補数符号付きint型です。
~x + ~y == ~(x + y)
条件を満たす数字があってもいいような気がするのですが。の間の数字をテストしてみました。
-5000
と
5000
が、一度も等しくなったことがない。条件の解を求める方程式を設定する方法はないでしょうか?
一方を他方に入れ替えると、プログラムに陰湿なバグが発生するのでしょうか?
解決方法は?
矛盾を避けるために、ある種の
x
と、いくつかの
y
(修正2
n
) のようなものです。
~(x+y) == ~x + ~y
2の補数*によって、それがわかる。
-x == ~x + 1
<==> -1 == ~x + x
この結果に注目すると、次のようになる。
~(x+y) == ~x + ~y
<==> ~(x+y) + (x+y) == ~x + ~y + (x+y)
<==> ~(x+y) + (x+y) == (~x + x) + (~y + y)
<==> ~(x+y) + (x+y) == -1 + -1
<==> ~(x+y) + (x+y) == -2
<==> -1 == -2
したがって、矛盾が生じる。したがって
~(x+y) != ~x + ~y
すべての
x
と
y
(修正2
n
).
*1の補数演算を行うマシンでは、この等式は実際にはすべての
x
と
y
. これは、1つの補語の下に
~x = -x
. このように
~x + ~y == -x + -y == -(x+y) == ~(x+y)
.
関連
-
Cエラー [エラー] 代入_Ashesの左オペランドにlvalueが必要です-プログラマーズ・シークレット
-
[解決済み] mallocで文字列を確保する
-
[解決済み] Linux Socket write() によるBad File Descriptor C
-
[解決済み] while ( !feof (file) ) 」は、なぜいつも間違っているのですか?
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み] C言語でファイルサイズを取得するには?[重複]する
-
[解決済み] C言語で "unsigned long "をprintfする方法は?
-
[解決済み】このC関数は常にfalseを返すべきですが、そうではありません。
-
[解決済み】TRUEとFALSEのマクロの定義がおかしい件
-
[解決済み】 ios_base::sync_with_stdio(false); cin.tie(NULL) の有意性。)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
g++が内部・外部コマンドソリューションとして認識されない、MinGWを初めて使うときの落とし穴
-
#137: 式は変更可能なlvalueでなければならない問題 // 文字列配列の代入問題
-
未定義の `__isoc99_sscanf' への参照
-
C - 添え字の値が配列でもポインタでもベクトルでもないエラー
-
[解決済み] C言語で配列のサイズを決定するにはどうすればよいですか?
-
[解決済み] 配列のすべてのメンバーを同じ値で初期化するには?
-
[解決済み] Cコードの単体テスト【終了しました
-
[解決済み] プログラム終了前にmallocの後にfreeをしないと本当に何が起こるのか?
-
[解決済み] なぜsizeof(x++)はxをインクリメントしないのですか?
-
[解決済み] C 言語の配列へのポインタ/ポインタの配列の曖昧さ解消