53_BIN_DEC.py

53_BIN_DEC.py

Ellenőrzi, hogy a szám a megadott tartományban van‑e. A while ciklusban maradékos osztással (% 2)  kiszámítja a biteket. A biteket jobbról balra fűzi össze a bajt változóban.

Végül kiírja az eredményt: például 13 → 1101.

Ez a módszer a bináris számképzés alapja — minden bit a szám 2‑vel való osztásának maradékát jelenti.


szam = int(input("Adj meg egy 256-nál kisebb nem negatív egész számot: ")) 

if 0 <= szam < 256: 

     eredeti = szam 

     bajt = ""  

     if szam == 0: 

          bajt = "0" 

      else: 

          while szam > 0: 

              bit = szam % 2 

              bajt = str(bit) + bajt 

              szam //= 2 

     print(f"A {eredeti} kettes számrendszerben: {bajt}")          

else: 

     print("Hibás bemenet. 0–255 közötti egész számot adj meg.")   

Kettes számrendszerben megadott számot alakítsuk át tízes számrendszerbe!

Legyen a szám: 10112

Az átszámítás módja: 1*2^3 + 0*2^2 + 1*2^1 + 1

Nézzük meg ennek a kifejezésnek egy másik alakját, amelyet 2 kiemelésével kapunk:

((1*2 + 0)*2 + 1)*2 + 1 

Ez az ún. Horner-elrendezés. Ennek a formának az előnye, hogy a kifejezés a szorzás és összegzés műveletekkel kiszámítható. Nincs szükség hatványozásra. A decimális változóban képezzük az összeget.

Nem egyszerűen csak összegzésről van szó.

Az összeget szorozzuk a számrendszer alapszámával, és ehhez hozzáadjuk a következő bit értékét. 

Fogalmazzuk meg általánosan is a feladatot!

Egy G alapú számrendszerben megadott szám számjegyei legyenek az A vektorban.

Alakítsuk át az így megadott számot tízes számrendszerbeli számmá. 

Horner-elrendezés:

S = 0

Ismétlés I = 1-től N-ig: 

      S = S * G + A(I)

Ki: S