Python bisa nangani nomer lan senar minangka nomer biner, octal, lan heksadesimal uga nomer desimal biasanipun. Iku uga gampang kanggo ngowahi antarane wong-wong mau.
Ing bagean iki, isi ing ngisor iki bakal diterangake bebarengan karo kode conto.
- Nulis integer ing biner, octal, lan heksadesimal.
- Ngonversi angka dadi string ing notasi biner, octal, lan heksadesimal.
- fungsi built-in (contone ing basa pemrograman)
bin()
,oct()
,hex()
- metode string
str.format()
, Fungsi Dibangunformat()
,f senar - Ngonversi integer negatif menyang string ing format pelengkap loro.
- fungsi built-in (contone ing basa pemrograman)
- Ngonversi string ing notasi biner, octal, lan heksadesimal dadi angka.
- fungsi built-in (contone ing basa pemrograman)
int()
- fungsi built-in (contone ing basa pemrograman)
- Tuladha Aplikasi
- Aritmatika string biner
- Ngonversi antarane nomer biner, octal, lan heksadesimal
Nulis integer ing biner, octal, lan heksadesimal.
Kanthi nambahake ater-ater ing ngisor iki, angka integer bisa ditulis ing binar, oktal, lan heksadesimal.
Sampeyan uga bisa nggunakake huruf kapital.
- Angka binar:
0b
utawa0B
- Oktal:
0o
utawa0O
- Nomer heksadesimal:
0x
utawa0X
Output print () bakal ana ing notasi desimal.
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
Malah kanthi awalan, jinis kasebut minangka integer integer.
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'>
Amarga iku jinis integer, bisa digunakake kanggo operasi aritmetika biasa.
result = 0b10 * 0o10 + 0x10
print(result)
# 32
Miwiti karo Python 3.6, iku bisa kanggo masang underscores _ ing nomer. Mbaleni garis garis _ bakal nyebabake kesalahan, nanging sampeyan bisa nglebokake akeh sing dikarepake anggere sampeyan ora mbaleni.
Ing _ underscore ora mengaruhi nomer, supaya bisa digunakake minangka separator nalika ana akeh digit. Contone, nglebokake garis ngisor _ saben patang digit gampang diwaca.
print(0b111111111111 == 0b1_1_1_1_1_1_1_1_1_1_1_1)
# True
bin_num = 0b1111_1111_1111
print(bin_num)
# 4095
Ngonversi angka dadi string ing notasi biner, octal, lan heksadesimal.
Kanggo ngowahi nomer dadi string ing notasi biner, octal, utawa heksadesimal, gunakake fungsi sing ana ing ngisor iki.
- fungsi built-in (contone ing basa pemrograman)
bin()
,oct()
,hex()
- metode string
str.format()
, Fungsi Dibangunformat()
,f senar
Bagean iki uga nerangake carane njaluk senar ditulis ing format nglengkapi loro kanggo nilai negatif.
Fungsi built-in bin(), oct(), hex()
Fungsi sing dibangun ing ngisor iki bisa ngowahi angka dadi string biner, octal, lan heksadesimal.
- Angka binar:
bin()
- Oktal:
oct()
- Nomer heksadesimal:
hex()
Saben ngasilake senar kanthi prefiks ing ngisor iki
- Angka binar:
0b
- Oktal:
0o
- Nomer heksadesimal:
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'>
Yen sampeyan ora mbutuhake awalan, gunakake irisan [2:] kanggo ngekstrak senar ing mburi, utawa gunakake format () kaya sing diterangake sabanjure.
print(bin(i)[2:])
print(oct(i)[2:])
print(hex(i)[2:])
# 11111111
# 377
# ff
Yen sampeyan pengin ngowahi dadi string desimal, sampeyan bisa nggunakake str ().
print(str(i))
# 255
print(type(str(i)))
# <class 'str'>
Dibangun ing format fungsi (), string method str.format(), f string
Dibangun ing format fungsi () lan cara senar str.format () lan f-string uga bisa ngowahi nomer kanggo binar, octal, lan senar heksadesimal.
Kanthi nemtokake argumen format kapindho () kaya ing ngisor iki, bisa diowahi dadi string biner, octal, lan heksadesimal.
- Angka binar:
b
- Oktal:
o
- Nomer heksadesimal:
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'>
Yen sampeyan pengin entuk string kanthi awalan 0b,0o,0x, tambahake # menyang string spesifikasi format.
print(format(i, '#b'))
print(format(i, '#o'))
print(format(i, '#x'))
# 0b11111111
# 0o377
# 0xff
Sampeyan uga bisa ngisi 0 kanthi nomer digit apa wae. Elinga yen jumlah karakter kanggo awalan (loro karakter) uga kudu dijupuk menyang akun nalika ngisi nol karo ater-ater.
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
Cara senar str.format () bisa digunakake kanggo konversi uga.
print('{:08b}'.format(i))
print('{:08o}'.format(i))
print('{:08x}'.format(i))
# 11111111
# 00000377
# 000000ff
Miwiti karo Python 3.6, sampeyan uga bisa nggunakake senar f.f'xxx'
print(f'{i:08b}')
print(f'{i:08o}')
print(f'{i:08x}')
# 11111111
# 00000377
# 000000ff
Ngonversi integer negatif menyang string ing format pelengkap loro.
Nalika integer negatif diowahi dadi senar binar utawa heksadesimal nggunakake bin () utawa format (), Nilai Absolute bakal duwe tandha minus.
x = -9
print(x)
print(bin(x))
# -9
# -0b1001
Ing Python, operasi bitwise ing integer negatif uga dileksanakake ing perwakilan nglengkapi loro. Mulane, yen sampeyan pengin njaluk senar ditulis ing wangun nglengkapi loro, sampeyan bisa njupuk bitwise logis UTAWA & amp; kanthi jumlah maksimum bit digit dibutuhake, minangka nderek.
- 4bit:
0b1111(=0xf)
- 8bit:
0xff
- 16bit:
0xffff
print(bin(x & 0xff))
print(format(x & 0xffff, 'x'))
# 0b11110111
# fff7
Ngonversi string ing notasi biner, octal, lan heksadesimal dadi angka.
Fungsi internal int()
Kanggo ngowahi string ing notasi binar, octal, utawa heksadesimal dadi angka, gunakake fungsi int ().
Kanthi int(string, radix), string str ing biner, octal, notasi heksadesimal, lan sapiturute bisa diowahi dadi int numerik adhedhasar radix. Yen radix diilangi, angka kasebut dianggep dadi desimal.
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'>
Yen radix disetel dadi 0, konversi wis rampung adhedhasar ater-ater senar ing ngisor iki.
- Ater-ater biner:
0b
utawa0B
- Ater-ater oktal:
0o
utawa0O
- Ater-ater heksadesimal:
0x
utawa0X
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
Yen nomer dhasar 0 lan ora ana ater-ater, bakal diowahi dadi nomer desimal, nanging elinga yen wiwitan (sisih kiwa) diisi 0, kesalahan bakal kedadeyan.
print(int('10', 0))
# 10
# print(int('010', 0))
# ValueError: invalid literal for int() with base 0: '010'
Ing kasus liyane, strings nul-kapenuhan bisa diowahi minangka.
print(int('010'))
# 10
print(int('00ff', 16))
print(int('0x00ff', 0))
# 255
# 255
Yen string ora bisa diowahi nganggo radix utawa prefiks sing ditemtokake, ana kesalahan.
# 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'
Tuladha Aplikasi
Aritmatika string biner
Contone, kanggo nindakake operasi ing string ing notasi binar kanthi awalan 0b.
Sampeyan bisa gampang Ngonversi menyang Nilai numerik (jinis integer int), nindakake operasi ing, lan banjur ngowahi maneh menyang string str maneh.
a = '0b1001'
b = '0b0011'
c = int(a, 0) + int(b, 0)
print(c)
print(bin(c))
# 12
# 0b1100
Ngonversi antarane nomer biner, octal, lan heksadesimal
Iku uga gampang kanggo ngowahi strings biner, octal, lan heksadesimal kanggo saben liyane. Sawise diowahi dadi int numerik, bisa diowahi dadi senar saka format apa wae.
Zero-filling, prefixing, etc. bisa dikontrol dening string spesifikasi format.
a_0b = '0b1110001010011'
print(format(int(a, 0), '#010x'))
# 0x00000009
print(format(int(a, 0), '#010o'))
# 0o00000011