Çoğunuzun bildiği gibi, (bayt adresli) donanım bellekleri iki kategoriye ayrılabilir - küçük endian ve big endian . Küçük endian anılarında baytlar, küçük (en az anlamlı) uçta 0 ile başlayarak ve diğer taraftan büyük endianlarda numaralandırılır.
Eğlenceli gerçek : Bu terimler Jonathan Swift'in Lilliputian kralının vatandaşlarına küçük ucunda yumurtalarını kırmalarını emrettiği Gulliver'in Seyahatleri kitabına dayanıyor (böylece küçük endians) ve isyancılar büyük uçlarını kırıyorlardı.
Takas nasıl çalışır?
12648430
Aşağıdaki gibi görünebilecek büyük endian bir makinede bellekte işaretsiz bir tamsayı (32bit) olduğunu varsayalım :
addr: 0 1 2 3
memory: 00 C0 FF EE
Bayt sırasını ters çevirerek biz onaltılık tamsayı olsun 0xEEFFC000
olduğunu 4009738240
ondalık.
Senin görevin
Ondalık olarak işaretsiz bir 32bit tam sayı alan ve endianness'i yukarıda açıklandığı gibi değiştirirken ortaya çıkan tamsayıyı çıkaran bir program / fonksiyon yazın.
kurallar
- Giriş her zaman şu aralıkta
0
olacaktır:4294967295
- Çıktı STDOUT'a yazdırılabilir (son satırlar / boşluklar iyi) veya döndürülebilir
- Giriş ve çıkış ondalık
- Geçersiz girişteki davranış tanımsız bırakıldı
Test senaryoları
0 -> 0
1 -> 16777216
42 -> 704643072
128 -> 2147483648
12648430 -> 4009738240
16885952 -> 3232235777
704643072 -> 42
3735928559 -> 4022250974
4009738240 -> 12648430
4026531839 -> 4294967279
4294967295 -> 4294967295
42
ondalık olarak verilir, ancak teknik olarak örneğin C dilinde ikiliktir. Tabii ki yazabilirsiniz 0x2a
, önlemek istedim girdi gibi bir dize "2a"
veya benzeri almaktır .