得出一个int类型的数中打开位的数量的函数
作者:互联网
两种方式。
利用count计数,count = 0;
1.通过求模。
假设整数为n, n%2 !=0,则count++;否则n = n/2。 因为n为int,所以n/2的结果会被强制截断。当结果小于1时,会截断为0,退出循环。
int open_bit_qty(int n) { int count = 0; while (n) { if (n % 2 ) count++; n = n / 2; } return count; }
2.通过位运算。
将n与1进行&运算,判断最后一位(或者说第0位是否为打开状态)。通过将n不断右移,来循环判断。
循环条件为:CHAR_BIT*sizeof(int),得出当前系统下的int二进制的位数。这样写的好处应当是可移植性。
int open_bit_qty(int n) { int count = 0; int size = CHAR_BIT * sizeof(int); for (int i = 0; i <= size; i++, n >>= 1) { if (1 & n) count++; i++; } return count; }
标签:count,函数,int,qty,CHAR,++,open,数中 来源: https://www.cnblogs.com/muyangbeihai/p/15993277.html