+ 2

Right and Left shift operators

Who can help with explanation? x=5 print (x>>2<<x) output:32

26th Jul 2018, 11:26 AM
tardigrade
tardigrade - avatar
7 Respostas
+ 5
a << b = a // 2 ** b a >> b = a * 2 ** b
26th Jul 2018, 5:13 PM
Mert Yazıcı
Mert Yazıcı - avatar
+ 4
x = 5 so, x is 0000 0101 we shift it right by 2 and it becomes: 0000 0001 then we shift that left by 5 0010 0000 which is 32
26th Jul 2018, 11:38 AM
hinanawi
hinanawi - avatar
+ 4
Çalıştığını söylemek için yazdım İstersen açıklayarak da yazarım
26th Jul 2018, 6:00 PM
Mert Yazıcı
Mert Yazıcı - avatar
+ 3
#tardigrade from random import randrange as r, choice as c #randrange(a, b) a ve b arasından (b dahil değil) bir sayı seçer, choice(seq) verilen liste gibi şeyden rastgele bir şey seçer rn = lambda: str(r(0, 1000))#0 - 999 arasından (ikisi de dahil) bir sayı seçip yazı haline getiren bir anonim fonksiyon for x in range(10000): a, b = rn(), rn() #2 rastgele sayı op = c([('>>', '//'), ('<<', '*')]) #right ya da left shift' ten birini seçer assert eval(a + op[0]+ b) == eval(a + op[1] + '2**' +b),(a, op, b) # (a << b != a * 2 ** b) ya da (a >> b != a // 2 ** b) olursa a, b ve yapılan işlemi AssertionError yaparak gösterir
26th Jul 2018, 5:52 PM
Mert Yazıcı
Mert Yazıcı - avatar
+ 2
Mert bey bu harika bir kisayol. Tesekkur ederim. Tüm rakamlar için gecerlidir sanirim.
26th Jul 2018, 5:43 PM
tardigrade
tardigrade - avatar
+ 2
Mert abi sanirim bu yazdiginiz yukaridaki soruma cevapdir. Malesef ben function mevzusuna hala yaklasamamisam. Hazirda for while mevzusu uzerinde calisiyorum. Yine de tesekkur, incelerim bunu da
26th Jul 2018, 5:58 PM
tardigrade
tardigrade - avatar
+ 2
vakit olursa yazın, ben tam anlamasam da okuyanlar üçün faydalı olur belki de. tesekkur
26th Jul 2018, 6:03 PM
tardigrade
tardigrade - avatar