Reprezentace čísel v Pythonu

Reprezentace čísel v Pythonu

  • V Pythonu jsou čísla uložena v binární podobě, ale běžně je zapisujeme v desítkové soustavě.

  • Python umožňuje zápis i v jiných soustavách:

    • Binární číslo začíná prefixem 0b

    • Osmkové číslo začíná prefixem 0o

    • Hexadecimální číslo začíná prefixem 0x

Example

a = 0b1011   # binárně
b = 0o17     # osmičkově
c = 0x1F     # šestnáctkově
print(a, b, c)  # výstup: 11 15 31

Převod mezi soustavami

  • Funkce bin(), oct(), hex() převádí čísla na jiný zápis.

x = 25
print(bin(x))   # '0b11001'
print(oct(x))   # '0o31'
print(hex(x))   # '0x19'

Převod ze stringu do čísla

  • Funkce int() umí převést řetězec s číslem v libovolné soustavě.

print(int("1011", 2))   # 11
print(int("31", 8))     # 25
print(int("19", 16))    # 25

Aritmetické operace

  • + – sčítání

  • - – odčítání

  • * – násobení

  • / – dělení (výsledek je float)

  • // – celočíselné dělení

  • % – zbytek po dělení (modulo)

  • ** – mocnina

Example

a = 15
b = 4

print(a + b)   # 19
print(a - b)   # 11
print(a * b)   # 60
print(a / b)   # 3.75
print(a // b)  # 3
print(a % b)   # 3
print(a ** b)  # 50625

Porovnávací operace

  • == – rovnost

  • != – nerovnost

  • < – menší než

  • – menší nebo rovno

  • > – větší než

  • >= – větší nebo rovno

Example

x = 7
y = 10

print(x == y)  # False
print(x != y)  # True
print(x < y)   # True
print(x >= 5)  # True

Kombinované operátory

  • Zkrácený zápis operací s přiřazením:

    • += – přičti a ulož

    • -= – odečti a ulož

    • *= – vynásob a ulož

    • /= – vyděl a ulož

Example

z = 10
z += 5   # 15
z *= 2   # 30
z -= 4   # 26
z /= 2   # 13.0
print(z)

Binární operace

  • Python umí pracovat přímo s bity pomocí operátorů:

    • & – bitový AND

    • | – bitový OR

    • ^ – bitový XOR "exkluzivní nebo"

    • ~ – bitová negace

    • << – bitový posun vlevo

    • >> – bitový posun vpravo

Example

a = 0b1010
b = 0b1100

print(bin(a & b))  # 0b1000
print(bin(a | b))  # 0b1110
print(bin(a ^ b))  # 0b110
print(bin(a << 1)) # 0b10100

Procvičení

  • Vypočítejte 25 děleno 7:

    • celočíselně

    • se zbytkem

    • jako desetinné číslo

  • Ověřte, zda je číslo 2⁸ větší než 200.

Procvičení

  • Zapište číslo 42 v binární, osmičkové a šestnáctkové soustavě.

  • Převěďte binární číslo 110101 na desítkové pomocí int().

  • Ověřte, jak funguje a ^ b pro různá čísla.