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:
- Tvíundakerfið (e. binary): Byrjar á
0b - Áttundakerfið (e. octal): Byrjar á
0o - Sextándakerfið (e. hexadecimal): Byrjar á
0x
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.