自然数のバイナリ表現には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