网站建设费计入什么科目比较好,wordpress 归档文章,wordpress快速评论,电子商务平台 网站 建设方式常用操作一#xff1a;
n 的二进制表示中第 k 位#xff08;从0位开始算#xff09;是几
基本思路
先把 n 第 k 位数字移到最后一位#xff0c;用右移运算 nk看个位数字是几#xff0c;其实就是 x 1
实际就是#xff1a;nk1
//最低为从0…常用操作一
n 的二进制表示中第 k 位从0位开始算是几
基本思路
先把 n 第 k 位数字移到最后一位用右移运算 nk看个位数字是几其实就是 x 1
实际就是nk1
//最低为从0位算起
#includeiostream
#includecstring
using namespace std;
int main() {int n, k;cin n k;cout (n k 1) endl;return 0;
}
常用操作二lowbit(x)
lowbit(x)
作用
返回 x 的最后一位 1返回的是一个二进制数此数的最高位的 1 就是 x 的最后一位 1数的最右边的 1 。
例子
x1010 lowbit(x)10
x101000 lowbit(x)1000
实现: x -x
-x ~x1
x-x x(~x1)
例子
x 1010......100......0
~x 0101......011......1
~x1 0101......100......0
x(~x1)0000......100......0
按位取反是所有位都取反包括符号位
基本应用
统计 x 中 1 的个数
思想
每次把 x 的最后一位 1 去掉当 x0 时x 里面就没有 1 了减去多少次就说明 x 中有几个 1
例题二进制中1的个数
给定一个长度为n的数列请你求出数列中每个数的二进制表示中1的个数
输入格式
第一行包含整数n
第二行包含n个整数表示整个数列
输出格式
共一行包含n个整数其中的第i个数表示数列中的第i个数的二进制表示中1的个数
数据范围
1n100000
0数列中元素的值10^9
输入样例
5
1 2 3 4 5
输出样例
1 1 2 1 2
#includestdio.h
int lowbit(int x)
{return x -x;
}
int main()
{int n, x,res0;scanf(%d, n);while (n--){scanf(%d, x);while (x){x x - lowbit(x); //每次减去x的最后一位1res;}printf(%d , res);res 0;}return 0;
}
举例说明
x 1111 x 1010
~x 0000 ~x 0101
~x1 0001 ~x1 0110
x(~x1) 0001 x(~x1) 0010