[解決済み] 符号なし変数に負の値を代入するとどうなりますか?
2023-04-18 18:37:47
質問
符号なし変数に負の値を代入するとどうなるのか知りたかったのです。
コードはなんとなくこんな感じでしょうか。
unsigned int nVal = 0;
nVal = -5;
コンパイルエラーは出ませんでした。プログラムを実行すると
nVal
には奇妙な値が割り当てられていました。もしかして、2進数の補数値が
nVal
?
どのように解決するのですか?
公式の回答はこちら - 4.7 節 conv.integral
<ブロッククオート
"出力型がunsignedの場合、結果の値は出力元の整数に一致する最小のunsigned整数(modulo 2
n
ここで
n
は符号なし型を表現するために使用されるビット数です)。[注:2の補数表現では、この変換は概念的なものであり、ビットパターンに変化はありません(切り捨てがない場合)。-注を終了する ]。
これは本質的に、基礎となるアーキテクチャが 2 の補数ではない方法(符号付きマグニチュードや 1 の補数など)で保存する場合、符号なしへの変換は 2 の補数であるかのように動作しなければならないことを意味します。
関連
-
[解決済み] エラーが発生する。ISO C++は型を持たない宣言を禁じています。
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み] 解決済み] `pthread_create' への未定義の参照 [重複] [重複
-
[解決済み] int32の最大値は何ですか?
-
[解決済み] std::vector に対する反復処理: 符号なしインデックス変数と符号ありインデックス変数の比較
-
[解決済み] なぜこのプログラムは3つのC++コンパイラで誤って拒否されるのですか?
-
[解決済み] 関数からunique_ptrを返す
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】C++エラーです。"配列は中括弧で囲まれたイニシャライザーで初期化する必要がある"
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】IntelliSense:オブジェクトに、メンバー関数と互換性のない型修飾子がある
-
[解決済み】fpermissiveフラグは何をするのですか?
-
[解決済み] 式はクラス型を持つ必要があります。
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] 警告:暗黙の定数変換でのオーバーフロー