Как многие из вас, вероятно, знают, аппаратная память (с байтовой адресацией) может быть разделена на две категории - с прямым порядком байтов и с прямым порядком байтов . В воспоминаниях с прямым порядком байтов байты нумеруются, начиная с 0 на младшем (наименее значимом) конце, а в старших - наоборот.
Интересный факт : эти термины основаны на книге Джонатана Свифта « Путешествия Гулливера», в которой король-лилипутец приказал своим гражданам разбивать яйца на маленьком конце (таким образом, на маленьких концах), а повстанцы ломали свои яйца на большом конце.
Как работает обмен
Предположим, что у нас есть целое число без знака (32 бита) 12648430
в памяти на машине с прямым порядком байтов, которая может выглядеть следующим образом:
addr: 0 1 2 3
memory: 00 C0 FF EE
Инвертируя порядок байтов, мы получаем шестнадцатеричное целое число, 0xEEFFC000
которое находится 4009738240
в десятичном виде.
Твое задание
Напишите программу / функцию, которая получает беззнаковое 32-битное целое число в десятичном виде и выводит полученное целое число при обмене порядком байтов, как описано выше.
правила
- Input всегда будет находиться в диапазоне
0
от4294967295
- Вывод может быть напечатан в STDOUT (завершающие переводы строки / пробелы в порядке) или возвращены
- Ввод и вывод в десятичном виде
- Поведение при неверном вводе оставлено неопределенным
Контрольные примеры
0 -> 0
1 -> 16777216
42 -> 704643072
128 -> 2147483648
12648430 -> 4009738240
16885952 -> 3232235777
704643072 -> 42
3735928559 -> 4022250974
4009738240 -> 12648430
4026531839 -> 4294967279
4294967295 -> 4294967295
42
дается в десятичном виде, но технически это в двоичном в C, например. Вы можете, конечно, напечатать 0x2a
, что я хотел предотвратить, так это принимать ввод в виде строки "2a"
или тому подобного.