• Web sitemizin içeriğine ve tüm hizmetlerimize erişim sağlamak için Web sitemize kayıt olmalı ya da giriş yapmalısınız. Web sitemize üye olmak tamamen ücretsizdir.
  • Sohbetokey.com ile canlı okey oynamaya ne dersin? Hem sohbet et, hem mobil okey oyna!
  • Soru mu? Sorun mu? ''Bir Sorum Var?'' sistemimiz aktiftir. Paylaşın beraber çözüm üretelim.

İki tam sayıyı birleştirmek

LeGoLaS

Onursal Üye
Üyelik Tarihi
1 Ağu 2008
Konular
4,885
Mesajlar
16,461
MFC Puanı
15,790
İki tam sayıyı birleştirmek



Python'da iki tam sayıyı, tam sayı olan bir değişkene birleştirerek atmak istiyorum. Bunu, sayıları, karakter dizisi olarak alıp/oluşturup birleştirebiliriz fakat ben bunu bitwise işleçleriyle yapmak istiyorum. Şu an kodu yazamıcam fakat benim bir çözümüm var. Birinci sayıyı "<<" ile 2 kere sola kaydırıp, kaydırılmış haline birinci sayının ilk halini veya işleciyle ekliyoruz (topluyoruz yani). Bir kere daha sola ekliyoruz ve ikinci sayıyı ekliyoruz.


s1 = int(input("1. Sayıyı gir:"))
s2 = int(input("2. Sayıyı gir:"))
sdegis = s1 << 2
sdegis ^= s1
sdegis <<= 1
sdegis ^= s2 # buradan emin degilim
print("Sayıların birleşmiş hali: "+sdegis)


Son satırda ya ikilik tabanda "1" eklicez ya da 2. Sayıyı ekliyoruz.

Bu yöntemle bazı sayıları yapabiliyorum ama çoğu sayı olmuyor. Mesela " 33 – 66 –101"
Bunu sadece bitwise işleçleriyle yapmak için kısa ve net yöntem var mı ?

Birleştirebilirsin ama tekrar ayırmak için sayıların kaç bit alan kapladığını bilmen gerekir. Eğer ucu ucuna birleştireceksen birleştirirken de kaç bit olduklarını bilmelisin yoksa üzerine yazılıp bozulur. Bit işlemleri C gibi düşük seviyeli dillerde bolca yapılıyor ama orada sayılar sabit bit uzunluğuna sahip. Pythonda ise sayılar sınırsız büyüklükte olabilir.

Yukarıdaki örnekten yola çıkarsak eğer "s2" nin maksimum 32 bit uzunlukta olacağını garanti ediyorsan şu şekilde yapılabilir.

s1 = int(input("1. Sayıyı gir:"))
s2 = int(input("2. Sayıyı gir:"))
sdegis = (s1 << 32) | s2
...

s2'yi çıkartmak için

x = sdegis & (2**32 - 1)
 
Üst