01/12/06 19:34
stefano_decarlo
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!
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!
aaa