Java belirlediği shift operators açıklıyor:
sol tarafındaki terimin terfi türü sadece sağ işlenen beş düşük seviyeli bitleri vardiya olarak kullanılan int
ise mesafe. Sağ işlenen işlenenin, 0x1f
maske değeri ile bir bitlik mantıksal AND işleci &
(§15.22.1) tabi tutulması gibi. Gerçekte kullanılan kaydırma mesafesi her zaman dahil 0 ila 31 aralığındadır.
32 & 0x1f
değeri sıfırdır. Sol işlenen long
ise
, o zaman 63'e üst sınırı genişleyen yerine kaymasını herhangi bir spesifik beklenen değere sahip olmak amacıyla 31.
sağ işlenen için ekstra biraz olsun - Sağdaki 1, tam sayıların (örneğin, iki tamamlayıcı) yanı sıra bit sayısını (örneğin, 32) temel ikili temsilini belirtmeniz gerekir. Her programlama dili bunları farklı şekilde tanımlayabilir, ancak uygulama için işleri basitleştirmek adına, genellikle kullanılabilir bitlerin sayısından daha fazla değişime izin verilmediğini belirtirler. Bunun nedeni, temeldeki CPU donanımının da desteklememesidir. Sonuçta, bu çok bitleri değiştirmek istiyorsanız, sonuç her zaman aynı olacağından, sol işlenen artık önemli değildir.
Java gibi görünüyor. '>>> operatörünü tanımlayan birçok dili bilmiyorum. – leppie
Java'nın temellerini öğrenmeye çalışırken ben buna rastladım, evet, ama etiketlemedim, bu yüzden biraz değişimin oldukça genel bir kavram olduğunu varsaydım. – user183037
kontrol: http://stackoverflow.com/questions/3170412/why-is-132-1 Link için –