[解決済み] リトルエンディアンとビッグエンディアンを比較するC言語プログラム [重複] [重複
2023-07-28 16:10:44
質問
重複の可能性があります。
ビッグエンディアンまたはリトルエンディアンマシンを決定するための C マクロ定義?
int main()
{
int x = 1;
char *y = (char*)&x;
printf("%c\n",*y+48);
}
リトルエンディアンの場合は1が表示され、ビッグエンディアンの場合は0が表示されます。 ビッグエンディアンの場合は0と表示されますが、これは正しいのでしょうか? それとも、char*をint xに設定すると、エンディアンに関係なく、常に最下位ビットを指すのでしょうか?
どのように解決するのですか?
簡単に言うと、「はい」です。
32 ビット マシンを使っているとします。
リトルエンディアンであれば
x
のようなものがメモリ上に表示されます。
higher memory
----->
+----+----+----+----+
|0x01|0x00|0x00|0x00|
+----+----+----+----+
A
|
&x
だから
(char*)(&x) == 1
であり、かつ
*y+48 == '1'
. (48は'0'のアスキーコード)
ビッグエンディアンの場合、そうなります。
+----+----+----+----+
|0x00|0x00|0x00|0x01|
+----+----+----+----+
A
|
&x
ということで、こちらは
'0'
.
関連
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
コンパイルエラー:可変長オブジェクトが初期化されていない可能性があります。
-
[解決済み] Valgrind が初期化されていないバイトについて警告する
-
[解決済み] MIPSのネストされたForループと配列の使用
-
[解決済み] Linuxカーネルにおけるcontainer_ofマクロの理解
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] C 言語の配列へのポインタ/ポインタの配列の曖昧さ解消
-
[解決済み] なぜ16進数には0xがつくのですか?
-
[解決済み] フリーは、どのように無料化を知っているのですか?
-
[解決済み] C言語で "unsigned long "をprintfする方法は?
最新
-
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エラー [エラー] 代入_Ashesの左オペランドにlvalueが必要です-プログラマーズ・シークレット
-
libc++abi.dylib: NSException タイプの捕捉されない例外で終了するエラー
-
関数 'malloc' の暗黙の宣言に対する解決策
-
[解決済み] C言語で%sを正しく使う - 超基本レベル
-
[解決済み] c または c++ 用のシンプルな 2 次元クロスプラットフォームグラフィックスライブラリ?[クローズド]
-
[解決済み] "static const" vs "#define" vs "enum"
-
[解決済み] C言語でファイルが存在するかどうかを確認する最も良い方法は何ですか?
-
[解決済み] なぜC言語では構造体を頻繁にtypedefする必要があるのですか?
-
[解決済み] ビッグエンディアン、リトルエンディアンマシンを判定するCマクロの定義?
-
[解決済み] システムがビッグエンディアンかリトルエンディアンかを確認する方法は?