2014-04-23 26 views
5

Neyi arıyorum?"Bırakılıyor" bit değerini yakalamak

en Örneğin int a = 5 düşünelim

Onun ikili geçerli: Yani 101

biz

a >> 1 

sonra sağdaki bit, yani 1, bu durumda düşeceği ne zaman, Bazı değişkenlerde yakalamak istiyorum ..,

1st iteration k = 1 
2nd iteration k = 0 
3rd iteration k = 1 

Bu durumda kodlanmış bir değere sahibim, ancak sayı için herhangi bir rastgele kullanıcı girişi olabilir.

b = a >> 1 sonra b= a/2 yaparsam, burada m clueless!

Bu soruyu neden soruyorum? Ben bitlik ardından programın maksimum 3-4 hatlarında bitmiş olacaktır düşen yakalamak eğer

Örneğin, ..., bu durumda, ikili ondalık dönüşüm için programı almak

Elbette mümkün olup olmadığını bilmem gereken başka bir mantık var!

+0

** u downvote planlıyorsanız, bir 'bit' kişi değil m olarak, ** bunun için bir neden damla lütfen benim günlük programlama hayatı! :) – NoobEditor

cevap

7

Store, değişen önce bir değişkene düşük bit örneğin

int a = 5; 
int lowestBit = a & 1; 
a >>= 1; 
+0

sol-en bit için de benzer bir yol var .... imzalı-bit düşünmüyorum varsayarak? – NoobEditor

+1

@NoobEditor En anlamlı bit sadece bit kümesini, yalnızca bit kümesine dönüştürür, örneğin, "0x80000000" veya "0x40000000" için 32-bit 'int ', işareti yakalamak isteyip istemediğinize bağlı olarak değişir. biraz ya da değil. Onaltılık sözdizimini anlamak zor görünüyorsa, sadece vardiyalı bit maskesini oluşturunuz, yani 'signBit = a & (1 << 31)', 'nextHighest = a & (1 << 30)', (1 << 0) == 1', yani, en düşük bit. – Arkku

İlgili konular