当前位置: 首页 > news >正文

网络服务提供商有哪些百度seo排名如何提升

网络服务提供商有哪些,百度seo排名如何提升,wordpress的文件夹,学院网站整改及建设情况报告目录 前言 一.常见的小问题 1.给定一个数n,确定它的二进制表示中的第x位是0还是1 2.给定一个数n,将它的二进制表示中的第x位修改成1 3.给定一个数n,将它的二进制表示中的第x位修改成0 4.给定一个数n,提取它的二进制表示中最右侧的1&…

目录

前言

一.常见的小问题

1.给定一个数n,确定它的二进制表示中的第x位是0还是1

2.给定一个数n,将它的二进制表示中的第x位修改成1

3.给定一个数n,将它的二进制表示中的第x位修改成0

4.给定一个数n,提取它的二进制表示中最右侧的1(即将其它位置位0)

5.给定一个数n,去掉它的二进制表示中最右侧的1

 6.异或运算的规则

二.典型例题


前言

位运算是一类常考的题型,关于位运算的操作符有以下几种:

按位取反(~)

左移操作符(<<)

右移操作符(>>)

按位与(&)

按位或 (|)

按位异或(^)

重点要区分&,|和^这几个操作符,按位与是有0则0,按位或是有1则1

按位异或相同为0,相异为1。也可以记成“无进位相加”,例如1+1=2, 因为是二进制所以变成0,但是不进位。

接下来介绍怎么利用这些操作符来解决常见的问题

一.常见的小问题

1.给定一个数n,确定它的二进制表示中的第x位是0还是1

首先声明,默认最低位是第0位。

方法:将n右移x位,与1做按位与操作,若结果为1,则n的第x位是1,若结果是0,则第x位是0

说明:右移操作是为了将第x位移到最低位,方便与1的最低位按位与,而1的其它位全是0,有0则0,故其它位的结果肯定是0,而最低位的结果则取决于x位是0还是1

代码操作:(n >> x) & 1 

2.给定一个数n,将它的二进制表示中的第x位修改成1

方法:将1左移x位,再与n按位或

说明:将1左移x位是为了对n的第x位进行“定向打击”,1的第x位是1,其余位是0。按位或的特点是有1则1,故结果的第x位肯定是1,其它位取决于n的其它位是0还是1,和原来相比不会变化

代码操作:n = (1 << x) | n

3.给定一个数n,将它的二进制表示中的第x位修改成0

方法:将1左移x位,按位取反,再与n按位与

说明:按位与的特点是有0则0,故结果的第x位肯定是0,其它位取决于n的其它位是0还是1,和原来相比不会发生变化

代码操作:n = (~(1 >> x) ) & n

4.给定一个数n,提取它的二进制表示中最右侧的1(即将其它位置位0)

方法:n & -n 

说明:由n向-n转变,先将n按位取反,然后加1,这样使得n最右侧的1,左边区域全变成相反,右边区域全变成0,而按位与的特点是有0则0,故只有最右侧的1异或的结果是1,其余全是0。

5.给定一个数n,去掉它的二进制表示中最右侧的1

方法:n & (n - 1)

说明:由n到n-1,最右侧1的左边区域不变,右边区域(包括1)全部变成相反,按位与的特点是有0则0,故最右侧的1肯定会变成0,其余位不变

 6.异或运算的规则

a ^ 0 = a

a ^ a = 0

a ^ b ^ c = a ^ c ^ b 

二.典型例题

接下来有几道例题,大家可以先尝试做一做,答案放在下面了

位1的个数

class Solution {
public:int hammingWeight(uint32_t n) {int ret = 0;for (int i = 0; i <= 31; i++){if (((n >> i) & 1) == 1){ret++;}}return ret;}
};



比特位计数

class Solution {
public:vector<int> countBits(int n) {//x&(x-1)将x的最右侧的1变成0vector<int> v(n + 1);for (int i = 0; i <= n; i++){int x = i;int count = 0;while (x){count++;x = x & (x - 1);}v[i] = count;}return v;}
};



汉明距离

class Solution {
public:int hammingDistance(int x, int y) {int n = x ^ y;//统计有多少个1int ret = 0;while (n){ret++;n = n & (n - 1);}return ret;}
};



只出现一次的数字

class Solution {
public:int singleNumber(vector<int>& nums) {int ret = 0;for (int i = 0; i < nums.size(); i++){ret ^= nums[i];}return ret;}
};

只出现一次的数字iii

class Solution {
public:vector<int> singleNumber(vector<int>& nums) {//目标:将两个单身狗分开,相同的数不拆散,再将两组分别异或//方法:根据两个单身狗任意一个不同的比特位来进行分组int n = 0;for (auto e : nums){n ^= e;}//找到比特位是1的位置--两个单身狗这一位不同int pos = 0;for (int i = 0; i <= 31; i++){if (((n >> i) & 1) == 1) {pos = i;break;}}//根据这一位置的值将所有数分成两组异或int ret1 = 0, ret2 = 0;for (auto e : nums){if (((e >> pos) & 1) == 0){ret1 ^= e;}else{ret2 ^= e;}}return {ret1, ret2};//隐式类型转换}
};

http://www.hrbkazy.com/news/11313.html

相关文章:

  • wordpress 整站移植友情链接交换平台免费
  • b2b网站网络推广如何用html制作一个网页
  • 石材做网站汕头seo建站
  • 在中国做采购在哪个网站找产品品牌策划书
  • 做视频有赚钱的网站怎样建立自己网站
  • 建筑资质证书查询网站微信营销策略
  • 做公众号的网站模板重庆网站推广联系方式
  • 网站备案是域名备案还是服务器备案自动收录网
  • 淘宝网官方网站网页版有实力的网站排名优化软件
  • 怎样推广自己的项目aso优化渠道
  • 西安网站制作公司排网站分析报告范文
  • 深圳做网站的公司那个好重庆seo职位
  • 做响应式网站的物流网站服务器怎么搭建
  • vue做的网站模板北海百度seo
  • 万网速成网站培训机构需要哪些证件
  • 敦煌做网站 条件网络营销的核心
  • 做短视频的能跟几个网站签约深圳百度推广开户
  • 子目录网站长沙seo外包优化
  • 北京建委网站证书查询精准营销推广
  • 网站移动端适配怎么做网络维护培训班
  • 网站建设资讯版块如何做用户运营北京seo推广公司
  • 怎样知道哪个网站做推广好今日头条极速版官网
  • 网站侵权怎么做公证或证据保存win7优化教程
  • 公司网站平台app渠道推广
  • 做好网站建设的重要性新手怎么做网络销售
  • 面包屑网站导航怎么做网络营销有哪几种方式
  • 做的最好的紫砂网站自己如何做一个网站
  • 汽车之家网页版跳极速版seo外链怎么发
  • 建设政府网站的必要性南京网站建设
  • 永济微网站建设费用湖南网络推广服务