おそらくご存知のように、(バイトアドレス指定可能な)ハードウェアメモリは、リトルエンディアンとビッグエンディアンの 2つのカテゴリに分類できます。リトルエンディアンのメモリでは、バイトは、小さい(最下位の)終わりで0から始まり、ビッグエンディアンでは逆に番号が付けられます。
おもしろい事実:これらの用語はジョナサン・スウィフトの本「ガリバー旅行記」に基づいており、そこではリリプーティアン王が市民に小さな端で卵を割るように命じた(したがって、リトルエンディアンは反逆者は大きな端で彼らの卵を割るだろう)。
スワップの仕組み
12648430
次のように見えるビッグエンディアンのマシンで、メモリ内に符号なし整数(32ビット)があるとします。
addr: 0 1 2 3
memory: 00 C0 FF EE
バイトオーダーを反転させ、私たちは、16進数の整数取得0xEEFFC000
である4009738240
小数では。
あなたのタスク
上記のように、10進数の符号なし32ビット整数を受け取り、エンディアンネスを交換するときに結果の整数を出力するプログラム/関数を作成します。
ルール
- 入力は常に次の範囲に
0
なります4294967295
- 出力は、STDOUTに出力するか(末尾の改行/スペースは問題ありません)、または返すことができます
- 入力と出力は10進数です
- 無効な入力の動作は未定義のままです
テストケース
0 -> 0
1 -> 16777216
42 -> 704643072
128 -> 2147483648
12648430 -> 4009738240
16885952 -> 3232235777
704643072 -> 42
3735928559 -> 4022250974
4009738240 -> 12648430
4026531839 -> 4294967279
4294967295 -> 4294967295
42
10進数で指定されますが、技術的には、たとえばCではバイナリです。もちろん0x2a
、を入力することもできますが、防止したいのは、入力を文字列などとして取得することです"2a"
。