Nasıl Python ikili değişmezleri ifade edersiniz?

oy
303

Nasıl Python değişmezleri ile bir ikili sayı olarak bir tamsayı ifade edersiniz?

Kolayca onaltılık için cevap bulabildim:

>>> 0x12AF
4783
>>> 0x100
256

ve sekizlik:

>>> 01267
695
>>> 0100
64

Nasıl Python ikili ifade etmek değişmezleri kullanıyorsunuz?


Yanıtlar Özeti

  • Python 2.5 ve önceki: ikili kullanarak ifade edebilir int('01010101111',2)ama bir edebi ile.
  • Python 2.5 ve önceki: orada hiçbir şekilde ikili harfleri ifade etmek.
  • Python 2.6 beta: Çok gibi yapabilirsiniz: 0b1100111ya 0B1100111.
  • Python 2.6 p de: sağlayacak 0o27ya da 0O27bir sekizlik temsil etmek için (ikinci karakter harf, O'dır).
  • 2,6 aynı, ancak artık eski sağlayacaktır: Python 3.0 beta 027octals için sözdizimi.
Oluştur 04/08/2008 saat 19:20
kaynak kullanıcı
Diğer dillerde...                            


6 cevaplar

oy
241

Reference- için gelecek Python olasılıklar:
Python 2.6 ile başlayarak size öneki kullanılarak ikili değişmezleri ifade edebilir 0b veya 0B :

>>> 0b101111
47

Ayrıca yeni kullanabilirsiniz bin bir sayının ikili gösterimini almak için işlevini:

>>> bin(173)
'0b10101101'

Belgelerin işlenmesi sürümü: Python 2.6 Yenilikler

Cevap 16/08/2008 saat 13:35
kaynak kullanıcı

oy
64
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255

Diğer yol.

Cevap 04/08/2008 saat 19:34
kaynak kullanıcı

oy
11

Nasıl Python ikili değişmezleri ifade edersiniz?

Onlar değil "ikili" değişmezleri, ama daha çok, "tamsayı değişmezleri". Bir ile bir ikili formatı ile tamsayı değişmezleri ifade edebilen 0bir takip Bveya börneğin birler ve sıfırlar, bir dizi izledi:

>>> 0b0010101010
170
>>> 0B010101
21

Python 3'ten docs , bu Python tamsayı değişmezleri sağlama yolu vardır:

Tamsayı sabitleri aşağıdaki sözcük tanımlarla açıklanmıştı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"

ayrı kullanılabilir bellek saklanabilir ne tamsayı değişmezleri uzunluğu için herhangi bir sınırlama yoktur.

sıfır olmayan bir ondalık sayı başında sıfır izin verilmez unutmayın. Bu Python 3.0 sürümü öncesinde kullanılan C tarzı sekizlik değişmezleri ile anlam ayrımı içindir.

tam sayı hazır bilgi bazı örnekleri:

7     2147483647                        0o177    0b100110111
3     79228162514264337593543950336     0o377    0xdeadbeef
      100_000_000_000                   0b_1110_0101

3.6 sürümü değiştirildi: Altçizgilerin artık hazır bilgileri amaçları gruplandırılması için izin verilir.

ikili ifade diğer yolları:

Sen (muhtemelen sadece çoğu durumda tamsayı üzerinde ikilik işlemleri yapmalıdır rağmen) manipüle edilebilir bir dize nesnesinde sıfırları ve olanlar olabilir - sadece sıfırlar ve birler dize ve dönüştürme olan baz int geçmesi (2 ):

>>> int('010101', 2)
21

İsteğe olabilir 0bveya 0Bönek:

>>> 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

Okunabilir ikili geri int dönüştürme:

Bir ikili sabitin dize temsilini görmek için bin bir tamsayı geçirebilirsiniz:

>>> bin(21)
'0b10101'

Ve birleştirebilir binve intileri geri dönmek için:

>>> bin(int('010101', 2))
'0b10101'

Eğer önceki sıfırlar ile asgari genişliğe sahip olmasını istiyorsanız, hem de bir biçim özelliklerini kullanabilirsiniz:

>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'
Cevap 14/05/2016 saat 11:58
kaynak kullanıcı

oy
1

Burada başından 0 taban görmek oldukça kolay olan 8 (değil 10) olduğunu belirtir:

>>> int('010101', 0)
4161

Bir 0 ile başlamıyorsa yoksa, o zaman piton numarası tabanı 10 varsayar.

>>> int('10101', 0)
10101
Cevap 21/06/2016 saat 22:48
kaynak kullanıcı

oy
-1

Bu onaltılık () ve onunla gitmek için belki bin () ile Python 3.0 değişikliğe bağlı şeyler Ekim () biridir eminim.

DÜZENLEME: lbrandy cevabı her durumda doğrudur.

Cevap 04/08/2008 saat 19:27
kaynak kullanıcı

oy
-1

Bildiğim kadarıyla yukarı 2.5 ile Python, söyleyebilirim, sadece onaltılık & sekizli değişmezleri destekler. Ben gelecek sürümleri ancak kesin hiçbir şey ikili ekleme hakkında bazı tartışmalar buldunuz.

Cevap 04/08/2008 saat 19:26
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more