Python'da bin() Fonksiyonu

by trustix


Eklenme Tarihi : 22 Aralık 2020 10:26 Views:     442



 

Python'da Gömülü Fonksiyonlar

Python'da önceden tanımlanmış ve python çekirdeğinde bulunan birtakım fonksiyonlar vardır. Bu fonksiyonlar büyük oranda geliştiricilerin işini kolaylaştırmak için tanımlanmışlardır. Bunlardan biri de bin fonskiyonudur.

 

Python'da bin() Fonksiyonu Ne İşe Yarar?

Bin() fonksiyonu, Python programlamada bir tamsayı değerini yani integer türündeki bir veriyi kendisine eşdeğer olan ikilik bir sayı değerine dönüştürmek için kullanılmaktadır. Kendisine parametre olarak verilen değer mutlaka int türünde olmalıdır. İkilik sayı dizileri her zaman 0b ön ekiyle başladığı için dönüştürülen bütün değerlerin başında bu ön ek bulunur. Eğer integer veri türünde olmayan bir nesnenin ikilik dönüşümü sağlanacaksa mutlaka __index__ yöntemi ile birlikte kullanılmalıdır.

 

bin() Fonksiyonu Syntax

# Python'da bin() fonksiyonu
# bin() fonksiyonu syntax

bin(number)
  

 

bin() Fonksiyonu Nasıl Kullanılır?

# Python'da bin() fonksiyonu
# bin() fonksiyonu kullanımı

i_1 = 10
i_2 = 11
i_3 = 27
i_4 = 177

print(bin(i_1)) # Output: 0b1010
print(bin(i_2)) # Output: 0b1011
print(bin(i_3)) # Output: 0b11011
print(bin(i_4)) # Output: 0b10110001
  

Eğer integer veri türü dışında örneğin float bir veri türündeki sayısal değeri bin() fonksiyonuna parametre olarak gönderim bu şekilde ikilik bir sayı dizisine ulaşılmaya çalışılırsa aşağıdaki gibi bir hata çıkacaktır.

# Python'da bin() fonksiyonu
# bin() fonksiyonu kullanımı

f_1 = 10.15

print(bin(f_1)) # Output: TypeError: 'float' object cannot be interpreted as an integer

"""
    float türündeki bir verinin bin() fonksiyonu ile 
    ikilik bir dizeye dönüştürülemeyeceğini gösteren
    hata.
"""

 

Bin() fonksiyonu ile bir tamsayının ikilik sayı dizisine dönüştürülmesini yukarıda inceledik. Bunun dışında bin() fonksiyonu ile onaltılık bir sayı değeri de ikilik bir sayı dizisine dönüştürülebilir.

Örneğin:

# Python'da bin() fonksiyonu
# bin() fonksiyonu kullanımı
# onaltılık bir sayının ikilik sayıya dönüştürülmesi

o_1 = 0xff0
o_2 = 0xff

print(bin(o_1)) # Output: 0b111111110000
print(bin(o_2)) # Output: 0b11111111

Tamsayılar ve onaltılık sayılar haricinde sekizlik sayılar da bin() fonksiyonu yardımı ile ikilik sayı dizilerine dönüştürülebilir.

Örneğin:

# Python'da bin() fonksiyonu
# bin() fonksiyonu kullanımı


# Tamsayının ikilik eşdeğerinin bulunması

t_1 = 100
print(bin(t_1)) # Output: 0b1100100


# Onaltılık sayının ikilik eşdeğerinin bulunmması

o_1 = 0xff111
print(bin(o_1)) # Output: 0b11111111000100010001


# Sekizlik sayının ikilik eşdeğerinin bulunması

s_1 = 0o242424
print(bin(s_1)) # Output: 0b10100010100010100
  

__index__ yöntemi ile bir nesneyi ikilik sayı dizisine dönüştürmek

Buraya kadar yaptığımız örnekler hep farklı tabanlarda da olsa bir sayısal değeri ikilik sayıya dönüştürmek ile ilgiliydi. Ancak __index__ yöntemi kullanılarak bir nesne de ikilik bir sayı dizisine pekala dönüştürülebilir. Bu durumu anlamak için aşağıdaki örneği inceleyelim.

# Python'da bin() fonksiyonu
# bin() fonksiyonu kullanımı
# __index__ yöntemi ile bir nesnenin ikilik sayı dizisine dönüştürülmesi


"""
    Bir otomobil galerisinde belli markalara ait araç
    sayılarının bir sınıf içerisinde olduğunu düşünelim.
    __index__ yöntemi kullanılmadan bu class direkt olarak
    bin() fonksiyonuna parametre olarak verilemez. Çünkü 
    class bir tamsayı değildir. Bunun için __index__ yöntemi
    aracılığı ile bu araç sayılarının toplamının class a atanmasını
    sağlıyoruz. Daha sonra bu classı bin fonksiyonuna gönderiyoruz.
    Burada __index__ yönteminin asıl yaptığı şey toplam araç sayınısın
    return edilmesi ve direkt olarak class a bir tamsayı değeri olarak
    atanmasıdır. Bu atama yapıldıktan sonra bin() fonksiyonu bu class ı
    bir sayısal değer olarak algılayacak ve yapması gereken
    işleme yapacaktır.
"""


class  Car:
    bmw = 10
    mercedes = 11
    volvo = 7
    audi = 5
    toyota = 20

    def __index__(self):
        return self.bmw + self.mercedes + self.volvo + self.audi + self.toyota

print('Arabaların ikilik sayı dizisindeki değeri = ', bin(Car()))
# Output: Arabaların ikilik sayı dizisindeki değeri =  0b110101
  
 

__index__ yöntemi kullanarak bir nesnenin bir tamsayıya oradan da ikilik bir sayıya dönüşümünü yukarıda gerçekleştirmiş olduk. Buradaki örnekler dışında birçok örnek daha yapmak elbette ki mümkün. Onluk, onaltılık ya da sekizlik tabandaki bir sayı değeri taşıyan herşey bin() fonksiyonu yardımı ile ikilik sayı dizisine dönüştürülebilir. Örneğin:

# Python'da bin() fonksiyonu
# bin() fonksiyonu kullanımı

"""
    Ayrıca bir sayısal değer niteliği taşıyan
    onluk, onaltılık ya da sekizlik tabanda bir sayı
    değeri olan herşey bin() fonksiyonu aracılığı ile
    ikilik bir sayı dizisine dönüştürülebilir.
    Burada olduğu gibi range() fonksiyonu
    yardımı ile bir liste oluşturulup
    bu listenin eleman sayısının ikilik sayı karşılığı da
    bulunabilir.
"""


l_1 = [*range(10,100)]
print(bin(len(l_1)))
# Output: 0b1011011

 

Bir liste yapısının eleman sayısının ikilik bir sayı dizisine dönüştürülmesi gibi bir liste yapısındaki integer türündeki herhangi bir eleman da index değeri referansı ile ikilik bir sayıya dönüştürülebilir. Örneğin:

# Python'da bin() fonksiyonu
# bin() fonksiyonu kullanımı

"""
    Buradaki örneğimizde bir liste elemanını
    index değerini referans alarak
    bin() fonksiyonuna bir bağımsız değişken
    olarak gönderiyoruz. Daha sonra ise
    bu ikilik sayı dönüşümünü print fonksiyonu
    ile konsol ekranında çıktılıyoruz.
"""


liste_2 = [7, 10, 13, 16, 19, 21]
print(bin(liste_2[1]))
# Output: 0b1010

"""
    bin() fonksiyonuna bağımsız değişken olarak gönderilen
    listenin 1 index değerine sahip elemanı 10 olduğu
    için burada karşımıza çıkan 10 sayısının ikilik tabandaki
    değeridir.
"""
  

İkilik sayı dizilerinin '0b' ön ekiyle belirtildiğini söylemiştik. Dolayısı ile karşımıza çıkan her ikilik değerin de önünde bu ek mevcut idi. Ancak '0b' ön ekinden kaçınmak için format() fonksiyonu da kullanılabilir. Bu fonksiyon aracılığı ile ön ekin değil sadece ikilik sayı dizisinin çıktılanmasını sağlayabiliriz. Bir önceki örneğimizi format() fonksiyonunu kullanarak tekrar yapalım.

# Python'da bin() fonksiyonu
# bin() fonksiyonu kullanımı

"""
    Buradaki örneğimizde bir liste elemanını
    index değerini referans alarak
    bin() fonksiyonuna bir bağımsız değişken
    olarak gönderiyoruz. Daha sonra ise
    bu ikilik sayı dönüşümünü print fonksiyonu
    ile konsol ekranında çıktılıyoruz.
"""


liste_2 = [7, 10, 13, 16, 19, 21]
print(bin(liste_2[1]))
# Output: 0b1010



# format() fonksiyonu ile 0b ön ekinden kaçınmak.

liste_2 = [7, 10, 13, 16, 19, 21]
a = liste_2[1]
print(format(a, 'b'))
# Output: 1010

 





0

Yorum Formu

vikikod.com    © 2019