2014-04-23 12 views
5

Cosa sto cercando?Catching del valore di bit "dropping"

Consideriamo int a = 5 ad esempio

suo binario è: 101

Così, quando facciamo

a >> 1 

poi il bit più a destra, vale a dire, 1 in questo caso, sarebbe drop off, voglio prenderlo in qualche variabile..ie,

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

In questo caso, ho un valore hardcoded ma può essere un qualsiasi input utente arbitrario per il numero.

Se faccio b = a >> 1 quindi b= a/2 quindi m clueless qui!

Perché sto facendo questa domanda?

Per esempio, prendiamo il programma per la conversione del decimale a binario, in quel caso, se riesco a prendere il cadere po, il programma sarebbe stato fatto in 3-4 linee di massima ...

ci sono fuori rotta, altre logiche per le quali ho bisogno di sapere se è possibile!

+0

** se u intenzione di downvote, si prega di fare cadere una ragione per questo **, come m non una persona 'bit' nel mio programmazione giornaliera della vita! :) – NoobEditor

risposta

7

Conservare il bit più basso in una variabile prima di spostare, per esempio,

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

c'è un modo simile anche per il bit più a sinistra .... supponendo che non sto considerando il bit firmato ?? – NoobEditor

+1

@NoobEditor Per il bit più significativo basta cambiare la maschera di bit '1' in una che ha solo quel bit impostato, ad es.,' 0x80000000' o '0x40000000' per 'int's a 32-bit a seconda che si desideri prendere il segno un po 'o no. Se la sintassi esadecimale sembra difficile da capire, basta formare la maschera di bit con shift, cioè, 'signBit = a & (1 << 31)', 'nextHighest = a & (1 << 30)', tenendo presente che ' (1 << 0) == 1', ovvero il bit più basso. – Arkku