ho provato a fare funzionare il seguente codice:Bitshifting in C++ che produce la risposta sbagliata
char c = (2 << 7) >> 7
che dovrebbe restituire 0, perché 2 ha questa rappresentazione binaria come char
:
0 0 0 0 0 0 1 0
Dopo 7 turni di sinistra , otteniamo
0 0 0 0 0 0 0 0
Quindi, dopo sette turni a destra, otteniamo
0 0 0 0 0 0 0 0
Comunque, sto ottenendo il risultato come 2, non 0.
Il compilatore dice che 2 << 7
è di 256, ma è un char
e quindi non dovrebbe essere 256.
capisco che il 2 << 7
sarà calcolato come int
s e la risposta sarà messo in c
così 256 >> 7
è 2.
ho cercato di lanciare 2 a char (es: (char)2>>7
), ma non funziona neanche.
Sto cercando di estrarre ogni bit dal char
, così ho scritto questo codice:
char c = 0x02;
for(int i=0;i<7;i++)
{
char current = (c<<i)>>7;
}
Come posso ottenere ogni bit? Cosa c'è che non va in questo modo?
'2 << 7' * non * è un' char'. –
Si prega di non sostituire il testo della domanda con "risolto grazie" se si capisce cosa c'è che non va. Invece, aggiungi una risposta spiegando cosa non ha funzionato. – templatetypedef
Ho dimenticato ma questo è un vero capriccio. – haccks