- 7 Şub 2012
- 5,018
- 22
Merhaba arkadaşlar, uzun zamandır yeni konu açamıyordum iş hayatı ve projelerden fırsat bulupta..
Biraz vaktim var ve şimdi size yeni bir algoritma sorusu soruyorum.
Bu sefer soru çok kısa olacak.
Soru şu şekilde:
"x ve y adında iki adet integer değişkeni, başka hiçbir değişken kullanmadan yer değiştirin."
Yani öyle bir işlem yapın ki, bu işlemin sonunda x ile y nin değerleri birbiri ile yer değişmiş olsun.
Soruyu çözmek için katılan, düşünmeyi ve gelişmeyi seven arkadaşlara başarılar..
Gene her sorunun altına koyduğum gibi önemli dipnot : başka hiçbir harici değişken kullanmayın, dosya yazma okuma işlemi (daha genel konuşacak olursak io işlemi) yapmayın, sadece bu iki değişkeni kullanın.
Cevabı açıklıyorum :
(kondanta isimli üyemiz beklediğim cevabı verdi, başka doğru yaklaşımlarda oldu)
Biraz vaktim var ve şimdi size yeni bir algoritma sorusu soruyorum.
Bu sefer soru çok kısa olacak.
Soru şu şekilde:
"x ve y adında iki adet integer değişkeni, başka hiçbir değişken kullanmadan yer değiştirin."
Yani öyle bir işlem yapın ki, bu işlemin sonunda x ile y nin değerleri birbiri ile yer değişmiş olsun.
Soruyu çözmek için katılan, düşünmeyi ve gelişmeyi seven arkadaşlara başarılar..
Gene her sorunun altına koyduğum gibi önemli dipnot : başka hiçbir harici değişken kullanmayın, dosya yazma okuma işlemi (daha genel konuşacak olursak io işlemi) yapmayın, sadece bu iki değişkeni kullanın.
Cevabı açıklıyorum :
(kondanta isimli üyemiz beklediğim cevabı verdi, başka doğru yaklaşımlarda oldu)
Tebrikler.. Beklediğim cevap buydu.
Xor Swap diye de geçer.
Basitçe anlatmak gerekirse şöyle ki :
x = 001
y = 010
x = x XOR y
yani
001
010
=
011 // 3
y = x XOR y
yani
011
010
=
001 // 1
x = x XOR y
yani
011
001
=
010 // 2
x = 2
y = 1
olmuş oldu.
Xor işleminde, aynı bitler 0 farklı bitler 1 değerini alır.
Ve bilinmesi gereken bir diğer kural :
x XOR y = z ise
z XOR x = y
z XOR y = x
değerlerini verir.
Xor birçok şifreleme ve deşifreleme işlemlerinde de kullanılır.
Son düzenleme: