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 x
bir 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 >>= 1
monadik bağlama çok benziyor;)
x = x / 2
yerine 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 x
edilir 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.
x
yeniden atamak istiyorsanız , ikisi de bu şekilde uygun değildir: işlemle neyi ifade etmek istediğinize bağlı olarak yax >>= 1
ya 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.