Arduino练习作业:写两个程序,第一个用unsigned long int做变量,输出变量转为

Arduino练习作业:写两个程序,第一个用unsigned long int做变量,输出变量转为二进制后占的bit数。第二个用signed long int做变量,同样输出二进制所占bit数。这是我写的程序,但是运行后输出的总是0,求修正

第1个回答  推荐于2018-04-16
/*
Arduino练习作业:写两个程序,第一个用unsigned long int做变量,输出变量转为二进制后占的bit数。
第二个用signed long int做变量,同样输出二进制所占bit数。
适用0以上正整数,0需要额外加判断
*/

# include <Arduino.h>
int count_bits(unsigned long x){
int count =1 ;
while(count <=32){
if( x == 1){ // 判断x是否是1, 是则返回位数,不是x向右位移,直到最高位那个1
return count;
}
else{
count++;
x=x>>1;
}
}
}
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.println(count_bits(1)); //
Serial.println(count_bits(2)); //
Serial.println(count_bits(3)); //
Serial.println(count_bits(4)); //
Serial.println(count_bits(8)); //
Serial.println(count_bits(16)); //
Serial.println(count_bits(32)); //
Serial.println(count_bits(35)); //
delay(1000);
}本回答被提问者和网友采纳
相似回答