2016-04-14 27 views
0

16bit kaydım var. bit 0 değeri en
bit 1 0. olan ... 2 değeri bit 3 değerleri de 3
bit 4 sonunda 1.16bit kayıttan değer alma

Böylece değeri p de 1
olduğu Kayıt defterimdeki yazılan değer 30'dur çünkü: (0 x 1) + (3 x 2) + (1 x 8) + (1 x 16) = 30

Şimdi hangi değeri elde etmek için ters yapmak istiyorum ben bits:
(30 & 1)/1 = 0
(30 & 2)/2 = 1 (Bu yanlış, yanlış Ben yanlış yapıyorum ne 3)
(30 & 8)/8 = 1
(30 & 16)/16 = 1

olmalıdır?

cevap

1
(30 & 2)/2 = 1 (this is wrong, it should be 3) 

Bu yanlış. 2 biti elde etmek için 3 ile bit konumu değiştirilmelidir. Eğer and Bu durumda 3 << 1 = 6

(30 & 6)/2 = 3 
+0

HM .... i aynı durum var, ama biraz 9. bazı değer bu durumda Sonra da varsa ve kaydındaki değer 1054. Bit nedir 9.10 değerinin 2 tutulması. – Josef

+1

bu yüzden 3 tane 9 biti kaydırdı. Bitleri kağıda yaz ve göreceksin. Genel olarak m pozisyonunda n bitlerini almak için ve ((1 << n) - 1) ile << m' –

+0

Çok teşekkür ederim. Tam olarak ihtiyacım olan buydu. – Josef