Hoppa yfir í efnið

Talnakerfi

Í kaflanum um talnakerfi ræddum við framsetningu talna með ýmsum grunntölum. Málskipan (e. syntax) Python styður eftirfarandi grunntölur, auk tugakerfisins:

Python skilar ávallt niðurstöðum í tugakerfinu, eins og sjá má ef tölur í öðrum talnakerfum eru slegnar inn.

>>> 0b101010
42
>>> 0o52
42
>>> 0x2a
42

Að breyta úr tugakerfi

Hægt er að sjá framsetningu talna í þessum sömu talnakerfum með innbyggðu föllunum bin, oct og hex, t.d.

>>> bin(100)
'0b1100100'
>>> oct(100)
'0o144'
>>> hex(100)
'0x64'

Athugum að þessi föll skila öll strengjum.

Vissir þú?

Jafnvel þótt við notumst gjarnan við sextándakerfið og önnur talnakerfi til að eiga auðveldara með lestur og skrift í forritun, þá notar örgjörvinn sjálfur ávallt tvíundakerfið (einn og núll) undir yfirborðinu til að framkvæma útreikningana!


Þáttun strengja í tölur

Til að þátta (e. parse) strengi í tölur er hægt að nota fallið int. Fallið tekur streng sem fyrstu færibreytu og grunntölu sem aðra færibreytu, en sjálfgefið gildi hennar er 10. Fallið ræður við allar grunntölur á bilinu 2 upp í 36, og túlkar þannig a sem 10, b sem 11, o.s.frv. Forskeyti tvíunda-, áttunda- og sextándakerfistalna eru hundsuð, þannig að int virkar bæði á 0x32 og 32, en ef forskeytið stemmir ekki við valinn grunn, fáum við villu.

# Þáttun sextándakerfistölu
>>> int("ff", 16)
255

# Þáttun sextándakerfistölu með forskeyti
>>> int("0xff", 16)
255

# Þáttun tvíundakerfistölu
>>> int("1100", 2)
12

# Þáttun tölu með grunntöluna 4
>>> int("2300", 4)
176

# Þáttun tölu með grunntöluna 25
>>> int("ggfi", 25)
260393

# Sé engin grunntala gefin er færibreytan þáttuð sem tugakerfistala
>>> int("100")
100

# Þáttun sautjándakerfistölu með röngu forskeyti skilar villu
>>> int("0xff", 17)
ValueError: invalid literal for int() with base 17: '0xff'

Fallið int

Fallið int hefur ekki bara þann tilgang að þátta tölur úr strengjum, en hegðun fallsins veltur á tagi (e. type) inntaksins. Hugmyndin með þessu falli er að finna heiltöluframsetningu á inntakinu, sé það mögulegt. Ef tag inntaksins er float, skilar fallið heiltöluhluta inntaksins, þ.e.

>>> int(133.7)
133

eða ef það er bool, skilar fallið 0 fyrir False og 1 fyrir True, svo dæmi séu tekin.