ジャワ、1Sのバイナリ整数

これは、今年の会社の顔の質問です:

:一般的なアイデアはある進整数n個の文字列に変換し、そして数:

プライベート 静的 INT helper1(INT I){
     charが [] CHS = Integer.toBinaryString(I).toCharArray();
    int型のres = 0 ;
    INT J = 0; J <chs.length; J ++ ){
         場合(CHS [J] == '1' ){ 
            RES ++ 
        } 
    } 
    戻りRES。
}

 

第二の方法は:整数n 1及びAN AND演算、最下位ビット整数nが1である場合、結果は、そうでなければ1、0です。次いで左に1 1が、そうでなければ結果は0であり、動作およびN、低倍が1である場合、結果がゼロでないと進みます。動作サイクル以上、非ゼロの数を記録することができます。 

    パブリック 静的 INT helper2(INT N){ 

        int型のカウント= 0 ;
        int型フラグ= 1 一方、(フラグ<= N){
             場合(!(N&フラグ)= 0 
                カウント ++ 
            フラグ =フラグ<< 1 
        } 
        を返す数えます。
    }

 

第三の方法は:整数n 1及びAN AND演算、最下位ビット整数nが1である場合、結果は、そうでなければ1、0です。そして、nが右に1、操作および1を続行します。環状操作上、n = 0の数に記録ゼロ以外の(1)の終わりまで。

    プライベート 静的 INT helper3(INT N){
         int型のRES = 0 一方、(N!= 0 ){
             もし、((N - 1)== 1 ){ 
                RES ++ 
            } 
            N = N >> 1 
        } 
        戻りRESと、
    }

 

第四の方法は、次のとおり計算有する整数n及び(N-1) 整数が1だけデクリメントし、次いで0右端の整数となるであろう、元の整数演算で実行されます。そのような操作を行うことができる回数に1の数の整数のバイナリ表現。このような比較の数を減らすことができます。

    プライベート 静的 INT helper4(INT N){
         int型のRES = 0 一方、(N!= 0 ){ 
            RES ++ 
            N = N・(N-1 )。
        } 
        戻りRESと、
    }

 

 

オーバー...

 

参考:

1. Javaは1Sの二進整数を求めます

 

おすすめ

転載: www.cnblogs.com/gjmhome/p/11423301.html