Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Salve, avrei atroci difficolta' circa il seguente problema.
La traccia dice:
Si invertano i bit di una variabile unsigned long e si stampi il numero di bit “1” in quella variabile.
La soluzione e' la seguente:
#include <stdio.h>
main (){
int i;
int sum = 0;
unsigned long inv = 0;
unsigned long var = 7;
for (i = 0; i < 32 ; i++){
if((var & 1) == 1){
sum++;
inv += 1;
}
var <<= 1;
inv >>= 1;
}
printf("Ris: %d %d\n", inv, sum);
}
Bene, provato sul dev, non da risultati corretti.
Mi sapreste dire dov'è l'errore?
Inoltre, nell'if viene eseguito un and bit a bit... Ma l'& viene applicato al bit piu' alto oppure più basso?
Ancora: se var = 2(in dec) = 10(in bin), sara' 10&01 = 0, oppure 10 & 1 = 1?
Ahime...sono disperato, aiutatemi!
significa che, se ad esempio, var fosse stata pari a 2, nella variabile sum alla fine dovrei avere il valore 1, dato che 2 = 10 (dec -> bin), quindi un solo bit pari ad 1.