问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是位操作符

发布网友 发布时间:2022-04-30 07:53

我来回答

1个回答

热心网友 时间:2022-06-19 08:29

将数据转换成二进制,然后进行运算,如:
int a = 1; //a的二进制表示为0x00000001
a << 1; //a左移1位,变为0x00000010,就是2
a >> 1; //a右移1位,变为0x00000000,就是0
a | 1; //a按位或1,0x00000001 | 0x00000001,结果还是0x00000001
a & 1; //a按位与1,0x00000001 & 0x00000001,结果还是0x00000001
a ^ 1; //a按位异或1,0x00000001 ^ 00x00000001,结果为0x00000000
~a; //a按位取反,结果为0x11111110

讲的通俗易懂
一、传统的C方式位操作:

1.基本操作:

使用一个unsigned int变量来作为位容器。

2.操作符:

| 按位或操作符:result=exp1|exp2;当exp1和exp2中对应位中至少有一个为1时,result中对应位为1,否则为0。

& 按位与操作符::result=exp1&exp2;当exp1和exp2中对应位全为1时,result中对应位为1,否则为0。

^ 按位异或或操作符:result=exp1^exp2;当exp1和exp2中对应位不相同时,result中对应位为1,否则为0。

~ 反转操作符:将位容器中的所有位都反转,1变为0,0变为1。

<< 按位左移操作符:exp<<n,将容器中所有的位向左移n位,空出的位用0填充。

>> 按位右移操作符:exp>>n,将容器中所有的位向右移n位,空出的位用0填充。

|=,&=,^= 分别对应|&^三种操作符的复合操作符。

3.常用操作

这里我们假设有一个result的unsigned int变量用来储存32个学生的成绩(通过和不通过分别用0和1),这样result就有33位(result从右至左,从0开始计算位数,在这个例子中0位被浪费)。

(a) 将第27位设置为及格(设作1)其他位不变:

result|=(1<<27) //任意的位值与1作按位或操作其值为1,而与0作按位与操作其值不变

(b) 将第27位设置成不及格(设为0)。

result&=~(1<<27) //任意的位值与0作按位与操作其值为0,而与1作按位与操作其值不变

(c) 反转第27位的值。

result^=(1<<27) //任意的位值与1作按位异或操作其值为1,而与0作按位异与操作其值不变

二、C++中的bitset容器

1.头文件:

#include <bitset>

2.声明一个容器:

(a)声明一个指定位数的空容器(所有位设为0): bitset<int> bits;

(b)声明一个指定位数并将指定的几个位初始化为相应值的容器: bitset<n> bits(int);

bitdet<int> bits(string&)

总结:bitset模板类中类型参数传递容器的位数,而构造函数参数通过一个int或一个string&值来从右至左初始化容器中的相应值。

3.bitset的基本用法:

4.bitset与传统C位操作及字符串的转换

可以通过to_string()成员将容器转输出为一个string字符串,另外还可以用to_long()成员将容器输出到传统的用于C风格的位容器中。如:

unsigned long bits = bits.to_long();

sting str(bits.to_string());

5.bitset支持所有的位操作符。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我车祸被撞掉两颗门牙请问赔偿标准 未成年人在车祸中被撞掉两颗门牙是伤残吗 细菌性阴炎用什么洗液 红核洗液都有哪些作用 日语翻译: 从泡面广告对比来看中日文化差异 ---这一句用日语翻译怎么... ...在网页上打字的时候看不到选字的菜单栏,按空格键字就出来了,在QQ... 洋葱炒肉丝,洋葱是个宝,节后清肠多吃它,排脂降压不可少做法大全_百度知 ... AIGC艺术隐藏式创意二维码百科——艺术二维码什么意思?怎么样生成... 蓝海美业(北京)国际投资管理有限公司企业文化 我新办的交行信用卡昨天激活绑定微信了拿去刷用不了,然后我打给客服反应... c语言怎么进行位操作读取 c语言位操作的位字段填充 公布自编的几个C语言位操作函数 微博转发我投过票的投票活动,别人看到的是我的投票结果还是他也可以投票? c语言位操作重要吗 关于C语言的位运算的问题 有关C语言位操作的问题: 1&0=0要怎么理解。。符号&不懂 汉字打字速度最快的是那种输入法? 用哪种输入法输入汉字速度快? C语言位操作问题 哪种打字方法最快啊 用什么打字速度最快? 如何提高打字速度,哪种打字速度最快 常用的输入法类型哪个打字速度最快 哪种方法打字速度快? 怎么看好友的所有投票 微信公众号订阅号怎样才能插入超链接 就目前而言那种输入法打字速度最快? QQ里下载的音乐如何上传到百度云盘? 怎么把QQ音乐里的歌保存到百度云盘?怎么按,手机,我不会…… LOL操作要求最高的是哪个位置 香油炒鸡蛋可以治咳嗽吗? 香油与醋有什么作用? 醋炒鸡蛋有什么作用? 炒鸡蛋可以放醋和香油调味么? “醋炒鸡蛋”有什么作用? 醋炒鸡蛋治疗咳嗽?? 香油炒鸡蛋可以放醋吗? 炒鸡蛋&#xF95A;里放食醋有啥作用? 香油炒鸡蛋是否也有很好的止咳作用 吃香油煎鸡蛋有什么好处? 人行2020浙江体检通知出来了吗? 得到人民银行的体检通知,请问得到录用的机会有多大?? 2020年人行已通知体检的省份有哪些? 人民银行面试合格后什么时候下体检通知 人行各地市体检过了吗? 中国人民银行体检通知没考过的吗 21年中国人民银行分行及地市州支行哪些省已出体检通知? 人民银行体检后多久入职 2020年中国人民银行常州支行体检通知什么时候发?