Manakah dari teknik berikut ini yang merupakan pilihan terbaik untuk membagi bilangan bulat dengan 2 dan mengapa?
Teknik 1:
x = x >> 1;
Teknik 2:
x = x / 2;
Berikut x
ini adalah bilangan bulat.
x = x >>> 1
. Juga perhatikan bahwa tergantung pada platform dan kompiler mungkin cukup masuk akal untuk secara manual mengoptimalkan divisi dan perkalian menggunakan shift. - Memikirkan pengontrol mikro, misalnya, tanpa dukungan ALU langsung untuk perkalian.
x /= 2
karena x >>= 1
terlihat terlalu mirip monadic bind;)
x = x / 2
daripada ditulis x /= 2
. Preferensi subjektif mungkin :)
⬜=
kombinasinya, ini harus digunakan kapan pun memungkinkan. Ini akan menghapus kebisingan dan menempatkan penekanan pada fakta bahwa x
yang dimodifikasi , sedangkan umum =
Operator agak menunjukkan bahwa dibutuhkan pada independen nilai yang sama sekali baru dari yang lama. - Selalu menghindari operator gabungan (sehingga dapat dibaca sehingga seseorang yang hanya tahu operator matematika) mungkin memiliki titik juga, tapi kemudian Anda akan perlu untuk melepaskan sangat berguna ++
, --
, +=
, juga.
x
lagi, tidak ada yang sesuai dengan cara ini: itu harus berupax >>= 1
ataux /= 2
, tergantung pada apa yang ingin Anda ungkapkan dengan operasi. Bukan karena lebih cepat (kompiler modern mana pun akan mengkompilasi semua varian yang setara dengan perakitan yang identik dan cepat) tetapi karena itu kurang membingungkan.