Như hầu hết các bạn có thể biết, bộ nhớ phần cứng (địa chỉ byte) có thể được chia thành hai loại - endian nhỏ và big endian . Trong các ký ức endian nhỏ, các byte được đánh số bắt đầu bằng 0 ở đầu nhỏ (ít quan trọng nhất) và ở các đầu cuối lớn theo cách khác.
Sự thật thú vị : Những thuật ngữ này dựa trên cuốn sách Gulliver's Travels của Jonathan Swift , nơi vua Lilliputian đã ra lệnh cho công dân của mình phá vỡ trứng của họ ở đầu nhỏ (vì vậy những người cuối cùng nhỏ bé) và phiến quân sẽ phá vỡ chúng ở đầu lớn.
Cách hoán đổi hoạt động
Giả sử chúng ta có một số nguyên không dấu (32 bit) 12648430
trong bộ nhớ, trong một máy cuối lớn có thể trông như sau:
addr: 0 1 2 3
memory: 00 C0 FF EE
Bằng cách đảo ngược các byte đặt hàng chúng tôi nhận được số nguyên hệ thập lục phân 0xEEFFC000
mà là 4009738240
trong hệ thập phân.
Nhiệm vụ của bạn
Viết chương trình / hàm nhận số nguyên 32 bit không dấu trong số thập phân và xuất ra số nguyên kết quả khi hoán đổi độ bền như mô tả ở trên.
Quy tắc
- Đầu vào sẽ luôn nằm trong phạm vi
0
để4294967295
- Đầu ra có thể được in thành STDOUT (theo dõi dòng mới / dấu cách là tốt) hoặc trả lại
- Đầu vào và đầu ra là số thập phân
- Hành vi trên đầu vào không hợp lệ là không xác định
Các trường hợp thử nghiệm
0 -> 0
1 -> 16777216
42 -> 704643072
128 -> 2147483648
12648430 -> 4009738240
16885952 -> 3232235777
704643072 -> 42
3735928559 -> 4022250974
4009738240 -> 12648430
4026531839 -> 4294967279
4294967295 -> 4294967295
42
được đưa ra dưới dạng thập phân nhưng về mặt kỹ thuật, nó ở dạng nhị phân trong C chẳng hạn. Tất nhiên bạn có thể gõ 0x2a
, điều tôi muốn ngăn chặn là lấy đầu vào dưới dạng một chuỗi như "2a"
hoặc tương tự.