Python dikare jimar û rêzan wekî jimarên binar, heştek, û hexadecimal û her weha jimareyên dehiyê yên asayî bi dest bixe. Di heman demê de veguhertina di navbera wan de jî hêsan e.
Di vê beşê de, naveroka jêrîn dê digel koda nimûneyê were rave kirin.
- Di binary, octal, û hexadecimal de jimareyan binivîsin.
- Di nîşenên binary, oktal û hexadecimal de jimareyan veguherînin rêzan.
- fonksiyona çêkirî (mînak di zimanê bernamekirinê de)
bin()
,oct()
,hex()
- rêbaza string
str.format()
, Fonksiyonên Avakirîformat()
, f string - Jimarek negatîf di forma du-ya temamkerê de veguherînin rêzek.
- fonksiyona çêkirî (mînak di zimanê bernamekirinê de)
- Rêzên binî, oktal û hexadecimal bi jimareyan veguherînin.
- fonksiyona çêkirî (mînak di zimanê bernamekirinê de)
int()
- fonksiyona çêkirî (mînak di zimanê bernamekirinê de)
- Nimûneyên Serlêdanê
- Arîtmetîka rêza binary
- Di navbera hejmarên binary, octal, û hexadecimal de veguherînin
Di binary, octal, û hexadecimal de jimareyan binivîsin.
Bi lêzêdekirina pêşpirtikên jêrîn re, jimarên bêhejmar dikarin bi rêzê bi dunary, octal, û hexadecimal werin nivîsandin.
Hûn dikarin herfên mezin jî bikar bînin.
- Hejmara binary:
0b
an0B
- Octal:
0o
an0O
- Hejmara hexadecimal:
0x
an0X
Hilberîna çapê () dê di nîşana dehiyê de be.
bin_num = 0b10
oct_num = 0o10
hex_num = 0x10
print(bin_num)
print(oct_num)
print(hex_num)
# 2
# 8
# 16
Bin_num = 0B10
Oct_num = 0O10
Hex_num = 0X10
print(Bin_num)
print(Oct_num)
print(Hex_num)
# 2
# 8
# 16
Tewra bi pêşgira jî, tîp jimareyek înt e.
print(type(bin_num))
print(type(oct_num))
print(type(hex_num))
# <class 'int'>
# <class 'int'>
# <class 'int'>
print(type(Bin_num))
print(type(Oct_num))
print(type(Hex_num))
# <class 'int'>
# <class 'int'>
# <class 'int'>
Ji ber ku ew celebek yekjimar e, ew dikare ji bo operasyonên hejmarî yên birêkûpêk were bikar anîn.
result = 0b10 * 0o10 + 0x10
print(result)
# 32
Bi Python 3.6-ê dest pê dike, mimkun e ku meriv bihejmaran _ bi hejmaran têxe. Dubarekirina binxetekê _ dê bibe sedema xeletiyekê, lê hûn dikarin bi qasî ku hûn dixwazin têxin nav xwe heya ku hûn dubare nekin.
Binxala _ bandorê li hejmarê nake, ji ber vê yekê dema ku gelek jimar hebin dikare wekî veqetanek were bikar anîn. Mînakî, têxistina binxala _ her çar jimarek hêsan e ku were xwendin.
print(0b111111111111 == 0b1_1_1_1_1_1_1_1_1_1_1_1)
# True
bin_num = 0b1111_1111_1111
print(bin_num)
# 4095
Di nîşenên binary, oktal û hexadecimal de jimareyan veguherînin rêzan.
Ji bo veguheztina jimarekê di nav rêzek binary, oktal, an hexadecimal de, fonksiyonên çêkirî yên jêrîn bikar bînin.
- fonksiyona çêkirî (mînak di zimanê bernamekirinê de)
bin()
,oct()
,hex()
- rêbaza string
str.format()
, Fonksiyonên Avakirîformat()
, f string
Ev beş her weha rave dike ka meriv çawa ji bo nirxên neyînî rêzek di forma temamkerê du de diyar dike.
Fonksiyonên çêkirî bin(), oct(), hex()
Fonksiyonên çêkirî yên jêrîn dikarin hejmaran veguherînin rêzikên binary, oktal û hexadecimal.
- Hejmara binary:
bin()
- Octal:
oct()
- Hejmara hexadecimal:
hex()
Her yek rêzek bi pêşgirên jêrîn vedigerîne
- Hejmara binary:
0b
- Octal:
0o
- Hejmara hexadecimal:
0x
- bin() — Built-in Functions — Python 3.10.0 Documentation
- oct() — Built-in Functions — Python 3.10.0 Documentation
- hex() — Built-in Functions — Python 3.10.0 Documentation
i = 255
print(bin(i))
print(oct(i))
print(hex(i))
# 0b11111111
# 0o377
# 0xff
print(type(bin(i)))
print(type(oct(i)))
print(type(hex(i)))
# <class 'str'>
# <class 'str'>
# <class 'str'>
Ger hewcedariya we bi pêşgir tune be, slice[2:] bikar bînin da ku rêza li pişt wê derxînin, an jî wekî ku li dû hatî diyar kirin formata() bikar bînin.
print(bin(i)[2:])
print(oct(i)[2:])
print(hex(i)[2:])
# 11111111
# 377
# ff
Heke hûn dixwazin wê veguherînin rêzek dehek, hûn dikarin str ().
print(str(i))
# 255
print(type(str(i)))
# <class 'str'>
Forma fonksiyonê ya çêkirî (), rêbaza rêzikê str.format (), f string
Forma fonksiyonê ya çêkirî () û rêbazên rêzikê str.format() û f-string jî dikarin jimareyan veguherînin rêzikên binar, octal û hexadecimal.
Bi diyarkirina argumana duyemîn a format() ya jêrîn, ew dikare bi rêzê ve bibe rêzikên binary, octal û hexadecimal.
- Hejmara binary:
b
- Octal:
o
- Hejmara hexadecimal:
x
print(format(i, 'b'))
print(format(i, 'o'))
print(format(i, 'x'))
# 11111111
# 377
# ff
print(type(format(i, 'b')))
print(type(format(i, 'o')))
print(type(format(i, 'x')))
# <class 'str'>
# <class 'str'>
# <class 'str'>
Heke hûn dixwazin rêzek bi pêşgira 0b,0o,0x bistînin, # li rêzika taybetmendiya formatkirinê zêde bikin.
print(format(i, '#b'))
print(format(i, '#o'))
print(format(i, '#x'))
# 0b11111111
# 0o377
# 0xff
Di heman demê de gengaz e ku meriv 0 bi her hejmarek reqeman tije bike. Bala xwe bidinê ku dema ku sifir bi pêşgirekê tê dagirtin divê hejmara tîpên pêşgir (du tîp) jî li ber çavan bê girtin.
print(format(i, '08b'))
print(format(i, '08o'))
print(format(i, '08x'))
# 11111111
# 00000377
# 000000ff
print(format(i, '#010b'))
print(format(i, '#010o'))
print(format(i, '#010x'))
# 0b11111111
# 0o00000377
# 0x000000ff
Rêbaza string str.format() dikare ji bo veguheztinê jî were bikar anîn.
print('{:08b}'.format(i))
print('{:08o}'.format(i))
print('{:08x}'.format(i))
# 11111111
# 00000377
# 000000ff
Bi Python 3.6 dest pê dike, hûn dikarin rêza f jî bikar bînin.f'xxx'
print(f'{i:08b}')
print(f'{i:08o}')
print(f'{i:08x}')
# 11111111
# 00000377
# 000000ff
Jimarek negatîf di forma du-ya temamkerê de veguherînin rêzek.
Dema ku jimareyek negatîf bi karanîna bin() an format() veguhezîne rêzek binar an hexadecimal, nirxa mutleq dê xwedî nîşanek kêm be.
x = -9
print(x)
print(bin(x))
# -9
# -0b1001
Di Python de, operasyonên bitwise yên li ser hejmarên negatîf jî di nûnertiya du ya temamker de têne kirin. Ji ber vê yekê, heke hûn dixwazin xêzek bi forma temamkerê du-yê diyarkirî bistînin, hûn dikarin ORek mentiqî ya bitîkî bistînin & amp; bi herî zêde hejmara reqemên bit pêwîst, wiha.
- 4bit:
0b1111(=0xf)
- 8bit:
0xff
- 16bit:
0xffff
print(bin(x & 0xff))
print(format(x & 0xffff, 'x'))
# 0b11110111
# fff7
Rêzên binî, oktal û hexadecimal bi jimareyan veguherînin.
Fonksiyona çêkirî ya int()
Ji bo veguheztina rêzikek bi nîgara binar, oktal, an hexadecimal veguhezîne hejmarek, fonksiyona çêkirî ya int() bikar bînin.
Bi int(string, radix) strek str di binary, octal, hexadecimal notation, hwd. de dikare li ser bingeha radîxê veguhezîne int-a jimareyî. Heger radîx ji holê bê rakirin, jimar wekî dehiyek tê hesibandin.
print(int('10'))
print(int('10', 2))
print(int('10', 8))
print(int('10', 16))
# 10
# 2
# 8
# 16
print(type(int('10')))
print(type(int('10', 2)))
print(type(int('10', 8)))
print(type(int('10', 16)))
# <class 'int'>
# <class 'int'>
# <class 'int'>
# <class 'int'>
Ger radîx li 0 were danîn, veguhertin li ser bingeha pêşgira rêza jêrîn pêk tê.
- Pêşgira binary:
0b
an0B
- Pêşgira Octal:
0o
an0O
- Pêşgira hexadecimal:
0x
an0X
print(int('0b10', 0))
print(int('0o10', 0))
print(int('0x10', 0))
# 2
# 8
# 16
print(int('0B10', 0))
print(int('0O10', 0))
print(int('0X10', 0))
# 2
# 8
# 16
Ger jimareya bingehîn 0 be û pêşgir tune be, ew ê wekî jimareyek dehiyek were veguheztin, lê bala xwe bidin ku heke destpêkê (aliyê çepê) bi 0-ê were dagirtin, dê xeletiyek çêbibe.
print(int('10', 0))
# 10
# print(int('010', 0))
# ValueError: invalid literal for int() with base 0: '010'
Di rewşên din de, rêzikên dagirtî yên sifir dikarin wekî ku têne veguheztin.
print(int('010'))
# 10
print(int('00ff', 16))
print(int('0x00ff', 0))
# 255
# 255
Heke rêzik bi radîks an pêşgira diyarkirî neyê veguheztin, xeletiyek çêdibe.
# print(int('ff', 2))
# ValueError: invalid literal for int() with base 2: 'ff'
# print(int('0a10', 0))
# ValueError: invalid literal for int() with base 0: '0a10'
# print(int('0bff', 0))
# ValueError: invalid literal for int() with base 0: '0bff'
Nimûneyên Serlêdanê
Arîtmetîka rêza binary
Mînakî, ji bo pêkanîna operasyonek li ser rêzek bi nîşana binary bi pêşgira 0b.
Hûn dikarin wê bi hêsanî veguhezînin nirxek jimareyî (cureya yekjimar int), li ser wê operasyonan pêk bînin, û dûv re wê dîsa vegerînin rêzek str.
a = '0b1001'
b = '0b0011'
c = int(a, 0) + int(b, 0)
print(c)
print(bin(c))
# 12
# 0b1100
Di navbera hejmarên binary, octal, û hexadecimal de veguherînin
Di heman demê de hêsan e ku têlên binary, octal, û hexadecimal ji hev re veguherînin. Piştî ku veguheztinek navhejmarek jimareyî, ew dikare bibe xêzek ji her formatê were veguheztin.
Zero-dagirtin, pêşgir, hwd. dikare ji hêla rêzika taybetmendiya formatkirinê ve were kontrol kirin.
a_0b = '0b1110001010011'
print(format(int(a, 0), '#010x'))
# 0x00000009
print(format(int(a, 0), '#010o'))
# 0o00000011