NO.37十六届蓝桥杯备战|位运算的应用|保留获取指定位|指定位设置位1或0|反转指定位|最右边的1变为0|只保留最右边的1|异或|运算符优先级结合性(C++)

判断奇数和偶数

所有偶数的 2 进制表⽰中,最低位⼀定是 0 ,所有奇数的 2 进制表⽰中,最低位⼀定是 1 。所以将⼀个数字与 1 进⾏按位与运算,即可判断这个数是奇数还是偶数。

(x & 1) == 1, 说明x是奇数  
(x & 1) == 0, 说明x是偶数
B2037 奇偶数判断 - 洛谷
#include <iostream>
using namespace std;

int n;

int main()
{
    cin >> n;
    if ((n & 1) == 1)
        cout << "odd" << endl;
    else
        cout << "even" << endl;
    return 0;
}

保留⼆进制位中的指定位

有时候需要从⼀个整数 x 的 2 进制中取出某个位或者某⼏个位,使取出的位置上保留原来的值,其他位置为 0 ,这时候可以使⽤⼀个值 m ,使 m 的 2 进制位中对应取出的位置为 1 ,其他位为 0 。
然后使这两个数按位与( x & m )即可。
⽐如:取出x= 0010101 1 2 00101011_{2} 001010112 的最低1位,则只需要将x= 0010101 1 2 00101011_{2} 001010112 与m= 0000000 1 2 00000001_{2} 000000012 (末尾 1 位是1 ,其余位为 0 )进⾏按位与运算。

  00101011  
& 00000001  
------------  
  00000001

再⽐如:取出x= 0010101 1 2 00101011_{2} 001010112 的最低4位,则只需要将x= 0010101 1 2 00101011_{2} 001010112 与m= 0000111 1 2 00001111_{2} 000011112 (末尾 4 位是1 ,其余位为 0 )进⾏按位与运算。

  00101011  
& 00001111  
------------  
  00001011

再⽐如:取出x= 0010101 1 2 00101011_{2} 001010112

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值