Bir tamsayıyı 2'ye bölmek için aşağıdaki tekniklerden hangisi en iyi seçenektir ve neden?
Teknik 1:
x = x >> 1;
Teknik 2:
x = x / 2;
İşte xbir tamsayı.
x = x >>> 1. Ayrıca platforma ve derleyiciye bağlı olarak, vardiyaları kullanarak bölümleri ve çarpmaları manuel olarak optimize etmenin oldukça makul olabileceğini unutmayın. - Mikro kontrolörlerin düşünülmesi, örneğin çarpma için doğrudan ALU desteği olmadan.
x /= 2çünkü x >>= 1monadik bağlama çok benziyor;)
x = x / 2yerine yazmak için çok daha okunabilir olduğunu düşünüyorum x /= 2. Öznel tercih belki :)
⬜=kombinasyonları olduğu bir dilde , mümkün olduğunda bunlar kullanılmalıdır. Bu gerçeği gürültü ve koyar vurgu kaldırır xedilir modifiye genel ederken, =operatörün daha çok eskisinin tamamen yeni bir değer bağımsız alır düşündürmektedir. - Her zaman yanı onun nokta olabilir, ama o zaman son derece yararlı vazgeçmek gerekiyordu (sadece matematiksel operatörleri bilen birisi yani okunabilir yüzden o) kombine operatörleri kaçınarak ++, --, +=de.
xyeniden atamak istiyorsanız , ikisi de bu şekilde uygun değildir: işlemle neyi ifade etmek istediğinize bağlı olarak yax >>= 1ya olmalıdırx /= 2. Daha hızlı olduğu için değil (herhangi bir modern derleyici, eşdeğer varyantları yine de aynı, hızlı montajla derleyecektir), ancak daha az kafa karıştırıcı olduğu için.