Python'daki ikili değişmezleri nasıl ifade edersiniz?
Bunlar "ikili" değişmez değerler değil, "tamsayı değişmez değerler" dir. Tam sayı değişmezlerini ikili biçimle ve 0
ardından a B
veya b
ardından bir dizi sıfır ve bir ile ifade edebilirsiniz , örneğin:
>>> 0b0010101010
170
>>> 0B010101
21
Python 3 belgelerinden Python'da tamsayı değişmez değerleri sağlamanın yolları şunlardır:
Tam sayı değişmezleri aşağıdaki sözlük tanımlarıyla açıklanır:
integer ::= decinteger | bininteger | octinteger | hexinteger
decinteger ::= nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger ::= "0" ("b" | "B") (["_"] bindigit)+
octinteger ::= "0" ("o" | "O") (["_"] octdigit)+
hexinteger ::= "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::= "1"..."9"
digit ::= "0"..."9"
bindigit ::= "0" | "1"
octdigit ::= "0"..."7"
hexdigit ::= digit | "a"..."f" | "A"..."F"
Tamsayı değişmez değerleri için kullanılabilir bellekte saklanabileceklerin dışında bir sınır yoktur.
Sıfır olmayan bir ondalık sayıdaki baştaki sıfırlara izin verilmediğine dikkat edin. Bu, Python'un 3.0 sürümünden önce kullandığı C stili sekizli değişmezlerle netleştirme içindir.
Tam sayı değişmezlerine bazı örnekler:
7 2147483647 0o177 0b100110111
3 79228162514264337593543950336 0o377 0xdeadbeef
100_000_000_000 0b_1110_0101
3.6 sürümünde değiştirildi: Alt çizgilere artık değişmez değerlerde gruplandırma için izin verilmektedir.
İkili ifade etmenin diğer yolları:
Sıfırlanabilir ve bir dize nesnesine yönlendirilebilir (çoğu durumda tamsayı üzerinde bitsel işlemler yapmanız gerekir) - sıfırlar ve birler dizisinden ve dönüştürdüğünüz tabandan int iletmeniz yeterlidir (2 ):
>>> int('010101', 2)
21
İsteğe bağlı olarak 0b
veya 0B
ön ekine sahip olabilirsiniz :
>>> int('0b0010101010', 2)
170
Eğer başarılı olursa 0
üs olarak dize bir önek ile girmezse, o tabanı 10 üstlenecek:
>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21
İnt'den insan tarafından okunabilir ikili dosyaya dönüştürme:
İkili bir değişmezin dize olarak temsilini görmek için bin'e bir tamsayı iletebilirsiniz:
>>> bin(21)
'0b10101'
Ve birleştirebilir bin
ve int
ileri geri dönmek için:
>>> bin(int('010101', 2))
'0b10101'
Önceki sıfırlarla minimum genişliğe sahip olmak istiyorsanız, bir biçim belirtimi de kullanabilirsiniz:
>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'