2014-04-23 16 views
5

Czego szukam?Złapanie wartości bitu "upuszczenia"

Rozważmy int a = 5 np

Jego binarny jest: 101

Więc kiedy robimy

a >> 1 

następnie na prawo nieco, czyli 1 w tym przypadku byłoby zasnąć, chcę go złapać w niektórych zmiennych ..,

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

W tym przypadku mam zakodowaną wartość, ale może to być dowolny dowolny wpis użytkownika dla numeru.

Jeśli robię b = a >> 1, to b= a/2, więc m clueless tutaj!

Dlaczego zadaję to pytanie?

Weźmy na przykład program do konwersji po przecinku binarnym, w takim przypadku, jeśli mogę złapać padającym nieco, to program będzie zrobić w 3-4 linii Max ...

są oczywiście inne logiki, o których muszę wiedzieć, jeśli to możliwe!

+0

** jeśli u planują downvote, proszę upuść powód **, jak m nie jest 'bit' osobą w moim codzienne życie programistyczne! :) – NoobEditor

Odpowiedz

7

Store najniższy bit w zmiennej przed zmianą biegu, np

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

jest podobny sposób dla lewy-najbardziej bitowy .... przy założeniu, że nie biorą pod uwagę bit-podpis? – NoobEditor

+1

@NoobEditor Dla najbardziej znaczącego bitu wystarczy zmienić maskę bitową '1' na taką, która ma tylko ustawiony bit, np." 0x80000000 "lub" 0x40000000 "dla 32-bitowych' int's w zależności od tego, czy chcesz złapać znak trochę lub nie. Jeśli składnia heksadecymalna wydaje się trudna do zrozumienia, po prostu utwórz maskę bitową ze zmianami, tj. 'SignBit = a & (1 << 31)', 'nextHighest = a & (1 << 30)', pamiętając o tym ' (1 << 0) == 1', czyli najniższy bit. – Arkku

Powiązane problemy