2587 - Swap Bytes

De la Universitas MediaWiki
Versiunea pentru tipărire nu mai este suportată și poate avea erori de randare. Vă rugăm să vă actualizați bookmarkurile browserului și să folosiți funcția implicită de tipărire a browserului.

Cerință

Se dă un număr n, întreg și care va fi citit într-o variabilă pe 16 biți, cu semn. Calculați, într-o variabilă de același tip (și apoi afișați pe ecran valoarea acestei variabile) ceea ce se obține interschimbând cei doi octeți ai variabilei inițiale (secvența primilor 8 biți ajunge, în aceeași ordine pe ultimele 8 poziții, și invers).

Date de intrare

Programul citește de la tastatură numărul n.

Date de ieșire

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa pe ecran valoarea calculată. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări

  • -32768 ⩽ n ⩽ 32767

Exemplul 1

Intrare
1
Ieșire
Datele introduse corespund restricțiilor impuse.
256

Exemplul 2

Intrare
5
Ieșire
Datele introduse corespund restricțiilor impuse.
1280

Rezolvare ver. 1

def validare(n):
    return n.isdigit() and int(n) >= -2**15 and int(n) <= 2**15 - 1

def interschimbare_octeti(n):
    # Verificăm dacă n este pe 16 biți folosind funcția de validare
    if validare(n):
        # Extragem primul octet și al doilea octet
        primul_octet = int(n) & 0xFF
        al_doilea_octet = (int(n) >> 8) & 0xFF

        # Realizăm interschimbarea octeților prin combinarea lor într-un nou număr
        n_interschimbat = (primul_octet << 8) | al_doilea_octet

        return n_interschimbat
    else:
        print("Numărul introdus nu este pe 16 biți.")
        return None

if __name__ == "__main__":
    # Citirea valorii pentru n de la tastatură
    n = input("Introduceți numărul n (pe 16 biți, cu semn): ")

    # Validarea și apelarea funcției de interschimbare a octeților
    if validare(n):
        n_interschimbat = interschimbare_octeti(n)
        if n_interschimbat is not None:
            print(n_interschimbat)
    else:
        print("Datele introduse nu corespund restricțiilor impuse.")