c++零基础知识要点整理(6)

*请与c++零基础知识要点整理(5)搭配使用

位与运算符的应用:&(有零为零)

(1)奇偶性判断: (位与法)

一个数位与上1,结果为1则为奇数,结果为0则为偶数

例:cout<<(5&1)<<endl;//5的二进制表示:0b101与1位与即:0b101&0b001=1,则该数为奇数,同时需注意的是输出5&1的结果时要加括号,因为&优先级别低。

补充其他方法:(取模法)一个数对2取模,结果为1则为奇数,结果为0则为偶数

例:cout<<5%2<<endl;//5%2=1,奇数。

(2)获取一个二进制的后几位 

int a=0b101011001101;//(以获取一个二进制后位4位举例)

cout<<(a&0b1111)<<endl;//需要获取4位,则将该数二进制则与0b1111进行位与运算

以此类推:需要获取5位,则将该数与0b11111进行位与运算等等

(3)将一个二进制数的末几位归零 

int a=0b101011001101;//(以将一个二进制数的末4位归零举例)

cout<<(a&0b11111111111111111111111111110000)<<endl;//注意*将末尾归零不仅仅是将a&0b0000这么简单粗暴,因为整型在进行运算时会自动在前面补0,此处补零的个数:32(位)-4(将4位归零),int(整型)在计算机中占4字节,则表示为32位。

//同理此处的a在计算机内部运算时的表示为:0b00000000000000000000101011001101

(4)消除末尾连续的1

int a=0b101011001111;

第一种:cout<<(a&0b11111111111111111111111111110000)<<endl;//(3)的方法

第二种:cout<<(a&(a+1))<<endl;//将该数二进制与该数二进制数加1进行位与

(5)2的幂的判断

int a=0b100000000;

则:a-1=0b011111111;a&(a-1)=0b000000000;

判定一个数是否为2的幂:if( (a>0&&(a&(a-1)))==0)即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值