自然数のバイナリ表現には1がいくつありますか?

1810 ワード

C++で書かれていて、先日ブログに書いてあるideaを見て、いい感じで実現しました.
#include 
#include "CountOneNumbers.hpp"

int main(int argc, const char * argv[]) {
    // insert code here...
    int inputVariable = 1234;
    CountOneNumbers::countOneNumbers0(inputVariable);
    CountOneNumbers::printfBinary(inputVariable);
    return 0;
}
#ifndef CountOneNumbers_hpp
#define CountOneNumbers_hpp

#include 
#include 

class CountOneNumbers {
public:
    //            1
    static void countOneNumbers0(int someNumber);
    //         
    static void printfBinary(int someNumber);
};

#endif /* CountOneNumbers_hpp */
#include "CountOneNumbers.hpp"

//                      1.
//       ,             1        1         。
//         ?
//     ,          ,                       。
//           11001100
//           11001000
// ,           1   。
//          ?
//  2          ,                          。
//         ,                 1,
//      ,                 0  。
//                 ,    2        ,       
//9999999,     1,                9   。
//        1     , 11001100 11001000               1  0   ,
//              ,  11001100 1  11001011.
//   11001011 11001000     ,
//   11001100 11001011        11001000        1.
//            ?   0    。
//      ?    0  。
//                   1   。
void CountOneNumbers::countOneNumbers0(int someNumber) {
    if (someNumber < 0) {
        std::cout< 0) {
        someNumber = someNumber & someNumber - 1;
        oneCounter++;
    }
    std::cout< 0) {
        if ((maxWeight & someNumber) > 0) {
            std::cout<

出力は次のとおりです.
1    :5
1234       :10011010010
Program ended with exit code: 0