7-47バイナリの先頭のゼロ(10点)

1167 ワード

コンピュータ内部ではすべての値をバイナリで表現します.18のような10進数は、32ビットのコンピュータ内では1億億億円、1千万円と表現されています.左側から数えてみると、1番目の1の前に27個の0があります.これらの0を先頭のゼロと呼びます.
今、あなたの任務はプログラムを書いて、整数を入力して、32ビットの表現の下でその先頭のゼロの個数を出力します.
入力形式:
32ビットの整数が表現できる範囲内の整数です.
出力フォーマット:
入力が32ビットのバイナリ数として表されるときの、最初の1より前の0の数を表す整数.
サンプルを入力:
256

出力サンプル:23 #include


int main(void)  
{  
    int n; 
    int i = 0;
    int a[32] = {};
    scanf("%d",&n);
    if(n == 0){
    printf("32");// 0
    }
    if(n < 0){
    printf("0");//
    }
    while(n>0){
    a[i] = n%2;
    n /= 2;
    i ++;
    }
    for(i=0; i<32; i++){
    if(a[i]==1){
 
    printf("%d",31-i);
    break;   }
    }
    
    return 0;