蓝桥杯实战应用【算法代码篇】-一题三解:计算二进制中1的个数(附Java和C++代码)
题目描述
请编写一个函数,输入一个整数,输出该数二进制中表示1的个数。例如,把9表示成二进制1001,有2位是1。因此,如果输入9,则该函数输出2。
知识储备
1、位运算知识补充
位运算共有5种运算:与、或、异或、左移和右移。
(1)与、或和异或的运算规律
(2)左移
m<<n表示把m左移n位。即,最左边n位丢弃,最右边补0。如果是符号数,则先移位补0,后补符号位。
例:0000 1010B = 10d;1000 1010B = -10d
1)(无符号)0000 1010 << 2 = 0010 1000 = 40;
2)(有符号)1000 1010 << 2 = 1010 1000 = -40;
(3)右移
m>>n表示m右移n位。即,最右边丢弃,左边补0。如果是符号数,则右边丢弃,左边补满符号数,如:正数右移n位,左边补n个0;负数右移n位,左边补n个1。
1)