【C语言】统计一个数中1的个数(移位操作符)
2017-04-11 00:03
267 查看
移位操作符介绍:
== 移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。==位移位运算符分为【>>】 右移和【<<】 左移两种,均为双目运算符。第一运算对象是移位对象,第二个运算对象是所移的二进制位数。
移位时,移出的位数全部丢弃,移出的空位补入的数与左移还是右移花接木有关。 如果是左移,则规定补入的数全部是0; 如果是右移,还与被移位的数据是否带符号有关。若是不带符号数,则补入的数全部0;若是带符号数,则补入的数全部等于原数的最左端位上的原数(即原符号位)
左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变
示例:统计一个数中1的个数
#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语言实现打开一个文件(有内容的),统计这个文件中字符e出现了多少次
- 在不使用*、/、+、-、%操作符的情况下,如何求一个数的1/3?(更新了一些解释,用C语言实)
- 用C语言实现统计一个文件夹中各种文件的比例
- 【c语言】统计一个数字在排序数组中出现的次数
- 【C语言】统计一个数二进制中1的个数
- C语言的移位操作符
- c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
- 用c语言编程 统计输入的一个字符串中每个字母出现的次数
- 给定一个二进制数,要求循环移位,在原二进制数中操作(C语言)
- C语言:编写一个程序统计输入字符串中,各个数字、空白字符、以及其他所有字符出现的次数。
- C语言用二叉树统计一个源文件中每个单词的次数
- C语言中移位操作符那点事
- c语言中移位操作符的试验
- 用C语言实现统计一个文件夹中各种文件的比例
- C语言统计一个字符串中单词的个数
- 关于用C语言来实现对一个文档中的条目数字进行统计排序的实现
- C语言的移位操作符
- 一个小学奥数题的python实现(全排列,字符串循环移位,统计元素)
- 求一个数据结构C语言 关于关键字统计源代码
- 【C语言】编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数。