Sadece bitshift veya bitwise operatörleri kullanarak bir tam sayıyı başka bir tamsayıya (her ikisi de pozitif) bölerek kalanın nasıl elde edileceğini bilmek istiyorum. /
operatörü veya %
operatörü kullanılmamalıdır. Örneğin, bölme birimi 2^k
biçimindeyken kalanını elde etmek için, aşağıdaki işlem kalanını verir. d
şeklinde 2^k
olduğu zamanKalanları elde etmek için Bitshifts
m = n & (d - 1)
d = The divisor
n = The number
m = Remainder
2
olmayan güçler için benzer bir yöntem bilmek istiyorum. Şu anda
programming challenges
bir sorun üzerinde çalışıyorum ve program yürütme süresini azaltmak için böyle bir yöntem kullanmak istiyorum
Bit gösteriminin sadece baz 2'de olması bir sınırlama olmaz mıydı? Değeri 43/7 düşünün - değer aslında 6.142857 .... Bir temelde 2'den daha yüksek bir değer için hangi genel yaklaşımı düşündünüz? – Makoto
Genel bir yöntem yoktur. Bölünmeyi biliyorsanız, bölmeyi bir çarpma ve bazı geçişler ve eklemeler/çıkarmalar ile değiştirebilirsiniz. Yetkili C derleyicisine bu konuda sorun ve herhangi bir derleme zamanı sabiti için size sihirli değerler verecektir. –
Cevap sadece 1 bitshift deyimi içermiyorsa, javas mod operatörünü dövmediğinize bahse girerim. – goat