移位操作符介绍:
== 移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。==
位移位运算符分为【>>】 右移和【<<】 左移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。 如果是左移,则规定补入的数全部是0; 如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)
左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变
示例:统计一个数中1的个数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<stdio.h>
unsigned int value, val;
int count_one_bits(unsigned value)
{
int ones; //用于统计有几个1
for( ones = 0; value != 0; value = value >> 1 )
/*
** 右移直到这个数变成0就可以退出循环
** >>是右移动,无符号数右移左边补0
*/
if( value % 2 != 0 )
ones = ones + 1;
return ones;
}
void main()
{
printf( "请输入一个数:" );
scanf( "%d", &val );
printf("该数中有%d个1",count_one_bits(val));
}
最后
以上就是稳重大神最近收集整理的关于【C语言】统计一个数中1的个数(移位操作符)的全部内容,更多相关【C语言】统计一个数中1内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复