Nasıl XOR, değişken iş değiştirmeyi mu?
Birisi XOR hayır temp değişkeni ile iki değişken değiştirme nasıl çalıştığını bana açıklayabilir mi?
void xorSwap (int *x, int *y)
{
if (x != y) {
*x ^= *y;
*y ^= *x;
*x ^= *y;
}
}
Ben NE yaptığını anlamak, ama kimse nasıl çalıştığını mantığını bana anlatabilir miyim?
CEVAP
Diğer insanlar bunu anlattık, şimdi bunun iyi bir fikir olduğunu açıklamak istiyorum, ama şimdi değil.
Tek veya çok çevrim-döngü CPU basit vardı geri gün, bu hile pahalı bellek çözümlemesi veya dökülmesini önlemek için kayıtları kullanmak daha ucuz yığını oldu. Ancak, biz şimdi büyük boru hatları ile bunun yerine CPU var. P4 boru hattı 31 20 olması arasında değişiyordu () okuma ve kayıt için yazı arasında herhangi bir bağımlılık her şeyi takılmasına neden olabilir nerede kendi boru hatlarında aşamaları. Xor swap ve aslında hiç önemli değil B arasında çok ağır bazı bağımlılıkları vardır ama pratikte boru hattı durak. Durmuş bir boru hattı yavaş bir kod yolu neden olur, ve eğer bu takas iç döngüde ise, çok yavaş hareket ediyor olacaksın.
Genel uygulamada, derleyici gerçekten geçici bir değişken ile bir takas yaparken ne yapmak istediğinizi anlayabilmiş ve tek bir XCHG talimat derleyin. Xor swap kullanarak derleyici niyetinizi tahmin etmek çok daha zor ve bu nedenle çok daha az optimize etmek için büyük olasılıkla doğru olmasını sağlar. Kod bakımı, vb bahsetmiyorum bile.
Nasıl referans bir değişken geçtim mi?...
Nasıl değişken olup olmadığını belirle...
Nasıl Düzenli İfade, JavaScript için b...
Tarayıcı kapsamı değişken $erişmeye�...
Nasıl Python değişken türünü belirleme...