首页 > 编程语言 >c++__位运算符:位与运算符&

c++__位运算符:位与运算符&

时间:2024-08-03 21:59:51浏览次数:14  
标签:__ cout 二进制 int c++ 运算符 数为 次方

目的:

了解位与运算符并加深对它的运用

定义:

一种二元运算符,符号为&,运用于二进制数中,特性为有0为0。

#include<iostream>

using namespace std;
int main(){

    int a=0b1010;//10
    int b=0b0110;//6
  //a & b=0b0010;2
    cout<<(a & b)<<endl;
}

应用:

1、判断奇偶性

位与运算符可以用于判断数奇偶性。

方法:当一个数&(位与)1,得出的数为1,则该数为奇数;若为0,则为偶数。

int a=10;//0b1010
         //0b0001
//     a&1=0b0000=0
int b=3;//0b0011
        //0b0001
//    b&1=0b0001=1
cout<<(a&1)<<endl;
cout<<(b&1)<<endl;

2、获取一个二进制数的后n位

方法:将求的数&(位与)0b(n个1)。

int a= 0b10101011;
//获取后4位 0b1111
//     0b00001011
//a&0b1111=0b1011
cout<<(a&0b1111)<<endl;

3、消除末尾连续的1

当求一个数二进制上末尾连续的1时,

方法:先将该数加一再&原来的数。

int x = 0b100101111;
//  x+1=0b100110000;
//(x&(x+1))=0b10010000
cout << (x & (x + 1)) <<endl;

4、2的幂次方判定

判断一个数是否为2的幂次方,因为一个数为2的幂次方的话,它的二进制数首位为1,其他位为0.

方法:将这个数减去1,然后再&原来的数,当得到的数为0则为2的幂次方。使用的前提是所求的数大于0。

int y = 32;//0b100000
//y-1 = 0b011111
//y&(y+1)=0
cout << (y & (y - 1)) << endl;

标签:__,cout,二进制,int,c++,运算符,数为,次方
From: https://blog.csdn.net/twlw13/article/details/140894285

相关文章

  • 河南省赛ccpc
    ##F.优秀字符串题意:有n个字符串找出优秀字符串的个数。优秀字符串的定义:长度为5,第三个字符和第五个字符相同,前四个字符互不相同。分析:直接模拟即可代码:```#include<bits/stdc++.h>usingnamespacestd;intmain(){   intn;cin>>n;intans=0;   while(n--){......
  • 【香橙派系列教程】(四)基于ARM-Linux架构的语音控制刷抖音项目
    【四】基于ARM-Linux架构的语音控制刷抖音项目文章目录【四】基于ARM-Linux架构的语音控制刷抖音项目1.语音模块配置1.创建产品2.引脚配置3.词条定义4.添加控制5.发布版本6.烧录固件2.编程实现语音和开发板通信3.手机接入Linux热拔插1.dmesg命令2.adb调试踩坑问题3.总......
  • 基于Java的蛋糕甜品管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言详细视频演示项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • 【技术精粹】LambdaQueryWrapper实战指南:MyBatis-Plus从入门到精通(上:入门、基础用法
    文章目录JavaMyBatis-PlusLambdaQueryWrapper深入理解与实战应用前言第一部分:MyBatis-Plus入门1.1MyBatis-Plus是什么?1.2快速上手第二部分:LambdaQueryWrapper基础2.1LambdaQueryWrapper概览2.2LambdaQueryWrapper使用入门第三部分:LambdaQueryWrapper高级......
  • 三十七、MyBatis-Plus(3)
    ......
  • MySQL进阶(查询、备份与恢复)
    一、多表联合查询在关系型数据库中,表与表之间是有联系的,所以在实际应用中,经常使用多表查询。多表查询就是同时查询两个或两个以上的表。在MySQL中,多表查询主要有交叉连接、内连接、外连接、分组查询与子查询等5种。1、交叉连接(CROSSJOIN)笛卡尔积交叉连接(CROSSJO......
  • C++实现静态链表
    #include<iostream>usingnamespacestd;//定义静态链表的最大容量constintMAX_SIZE=100;//节点类classNode{public:intdata;//节点存储的数据intnext;//节点指向下一个节点的索引(在数组中的位置)//默认构造函数Node():data(0......
  • AtCoder Beginner Contest 365 随笔
    擦,F假了A判断闰年B输出次大值的下标用pair排序后即可C给定一个数组\(A_n\)和整数\(M\),尝试找到一个最大的\(m\),使得:\[\sum_{i=1}^n\min(A_i,m)\leM\]不等号左边显然随着\(m\)的增大而增大,所以可以二分一个\(m\),然后判断即可D两个人玩\(n\)局剪刀石头布......
  • NLP从零开始------7基础文本处理之关键词提取
    1.关键词提取技术简介    在现代。文本是海量的信息中量最大的、使用最广泛的一种数据类型。这些信息数据虽然能为人们的生活提供便利。但是在提取有价值的信息时仍面临着困难。通过关键词提取可以快速地提取一篇新闻的关键信息。    关键词是能够反应文本主......
  • Manhattan Triangle
    纪念一下代码打得太慢了导致比赛结束3分钟才做出来的E题我的做法:考虑确定枚举三角形的一个点。最开始尝试枚举\(x\)最大的点,但是后面发现不太好讨论,于是尝试枚举\(x\)在中间的点,此时发现由于曼哈顿是三角形不可能是钝角三角形,剩下两个点要么同时在中间点的上方,要么同时在中间点......