-1

私の知る限り、64 ビット コンパイラでは (コンパイラによって異なります) unsigned long long の最大サイズは、たとえば18446744073709551615ullのようになる可能性があるため、.c プログラムが必要なときに、リテラルを検索して-1ulに置き換えようとしました32ビットコンパイラによってコンパイルされ、2 ^ 64に等しく、すべての64ビットが1だったので機能したため、32ビットでの表現は-1ulでした(2の補数に基づいていると思います)

しかし、それは 2^(64-1) であるため、No . 9223372036854775808ullについて疑問に思っていましたが、32 ビット リテラルはどうなるでしょうか。-2ulまたは1ul????

この変換プロセスを説明できる人はいますか? なんとなく迷った…

アミール

4

1 に答える 1

1

9223372036854775808ull0x800000000000000016 進数で、タイプ0x00000000の変数に入れると (16 進数の最後の 8 桁) になりますint32

データをバイナリ形式で保存するための基本を学ぶ必要があるようです。関連するwiki ページといくつかの記事を読んで、手動で (紙の上で) 異なる表現間で数値を変換する練習をしてください。

于 2012-09-19T20:39:27.867 に答える