一篇文章教你在C++中操作符可分为哪几种类和用法

目录
  • 前篇
  • 正片开始
  • 总结

前篇

在上一篇中,我们讲了算数操作符,移位操作符,我们还顺带着把几个知识点重新给大家讲了一遍,相信有了上篇的基础,这节课上起来会特别的轻松吧。

正片开始

这篇我来给大家讲解,什么叫位操作符,什么又叫赋值操作符。

首先,那么我们先讲概念,什么叫做位操作符呢?操作的又是那个位?这里操作的是二进制位。位操作符就是把二进制的数字按照规定好的程序执行起来。

这里的符号有:

符号 代表的含义
& 按位与
| 按位或
^ 按位异或

按位与:

那么我们先来讲按位与,我们来举个例子:

就比如这个,因为这里 3 的二进制位为:011

5 这里的二进制位为:101

在这里,我们称:0为假,1为真

按位与的时候,就是一假为假,全真则真。那么,意思就是:

这里我们算出来结果是001,我们在把这个二进制数字转换为十进制数字结果是1,现在就可以在程序中调试出这个数字。我们来看一下调试结果。

答案是肯定的。

按位或:

先举个栗子,我们经常说,甲或者乙来帮忙都可以,那么这句话的意思就是甲来了,乙就可以不用来,乙来了,甲也就可以不用来。按位或也是相同的道理,写法和按位与一致只不过把&换成|,我们可以按照按位与来分析一下按位或的工作原理。大同小异。

它也有口诀:有真则为真,全假则为假。我们仍然以3,5举个鲜明的例子来给大家看一下:


这里二进制数为111,转换十进制数为 :7

我们一传代码看一下答案。

由此发现,上述正确。

按位异或:

接下来,我们来讲最后一个知识点:按位异或

有的小白心里就会说,可以仿照前面两种形式的概念,我们可以去猜,按位异或是什么。

答案是可以的。

按位与是:一假全假,全真则真。

按位或是:有真为真,全假则假。

那么,有的小白就会想到会不会是:全真则假,全假为真呢?这个猜想一半是错误的。

按位异或的计算方式是:对应二进制位相同则为假,对应二进制位相异则为真 。那么这是什么意思呢?我们来看一下。

我们可以看到,输出的结果是:110 转换十进制数字为 6

我们看一下实际操作的答案:

答案完全相等!!!

我给大家在梳理一下本篇的口诀,这样大家在学习的时候会事半功倍。

按位与:一假全假,全真则真。

按位或:有真为真,全假为假。

按位异或:相异为真,相同为假。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • c++中new和delete操作符用法

    "new"是C++的一个关键字,同时也是操作符.当我们使用关键字new在堆上动态创建一个对象时,它实际上做了三件事:获得一块内存空间.调用构造函数.返回正确的指针.当然,如果我们创建的是简单类型的变量,第二步就会被省略. new用法: 1. 开辟单变量地址空间 1)new int; 开辟一个存放数组的存储空间,返回一个指向该存储空间的地址.int *a = new int 即为将一个int类型的地址赋值给整型指针a. 2)int *a = new int(5) 作用同上,但是同时将整数

  • 浅谈C++虚重载操作符 virtual operator= 的使用方法

    C++中虚操作符和其他虚函数的规则一样,操作符可以为虚函数,进行动态绑定, 虽然这种情况并不多见.本文以赋值操作符operator=举例. 派生类中要重定义基类虚函数,要注意参数必须为基类引用类型,否则与基类中虚函数是完全不同的,无法进行预期的动态绑定. 派生类除了重定义基类的虚操作符,还要定义自身的操作符重载.即派生层次每增加一层,理论上派生类就需要多定义一个操作符重载. 以下程序使用引用reference,通过指针调用赋值操作符(例:*p = value)情况是一样的. #include <

  • C++输入输出操作符重载的深入分析

    操作符的重载有一些规则: 1. 重载操作符必须具有一个类类型或枚举类型操作数.这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含义.如:int operator+(int, int), 不可以    2. 为类设计重载操作符的时候,必须选择是将操作符设置为类成员还是普通非成员函数.在某些情况下,程序没有选择,操作符必须是成员:在另外一些情况下,有些经验可以指导我们做出决定.下面是一些指导:a. 赋值(=),下标([]),调用(())和成员访问箭头(->)等操作符必须定义为成员,将这些

  • C++中的三大函数和操作符重载(Boolan)

    C++中三大函数: 析构函数 复制构造函数 =操作符(copy assignment operator) 这三个特殊的成员函数如果程序员没有实现,编译器将提供默认的实现方式. 析构函数: 形如-foo_t(),函数名和构造函数相同,前面加-,如果对象是自由变量创建,析构函数将在脱离作用域时调用.如果对象是通过new操作符创建的,则通过delete操作符调用析构函数. 复制构造函数: 形如foo_t(const foo_t& foo),以下情况复制构造函数均会被调用: 当对象按值返回时候(retu

  • C++中的操作符重载详细解析

    一.什么是操作符重载操作符重载可以分为两部分:"操作符"和"重载".说到重载想必都不陌生了吧,这是一种编译时多态,重载实际上可以分为函数重载和操作符重载.运算符重载和函数重载的不同之处在于操作符重载重载的一定是操作符.我们不妨先直观的看一下所谓的操作符重载: 复制代码 代码如下: #include <iostream> using namespace std; int main(){    int a = 2 , b = 3;    float c =

  • C++-操作符重载、并实现复数类详解

    首先回忆下以前学的函数重载 函数重载 函数重载的本质为相互独立的不同函数 通过函数名和函数参数来确定函数调用 无法直接通过函数名得到重载函数的入口地址 函数重载必然发生在同一个作用域中 类中的函数重载 静态成员函数能与普通成员函数建立重载关系 全局函数和成员函数不能构成重载关系 操作符重载(operator) 什么是操作符重载? 大家都知道,在C里,有'+,-,*,/'这些操作符,且它们的功能就是实现普通变量运算. 由于C++是面向对象的,遇到的变量大多都是对象,所以优化了C里的操作符,使它们拥

  • C++ 开发之实现操作符重载的实例

    C++操作符重载 实现效果图: 实例代码: Matrix.h #pragma once #include "vector" #include "iostream" #define rep(i,n) for(int i=1;i<=n;i++) //宏定义for循环,精简代码 using namespace std; class Matrix { public: //基本构造函数 Matrix(int Row=0, int Column=0); //拷贝构造函数或

  • 一篇文章教你在C++中操作符可分为哪几种类和用法

    目录 前篇 正片开始 总结 前篇 在上一篇中,我们讲了算数操作符,移位操作符,我们还顺带着把几个知识点重新给大家讲了一遍,相信有了上篇的基础,这节课上起来会特别的轻松吧. 正片开始 这篇我来给大家讲解,什么叫位操作符,什么又叫赋值操作符. 首先,那么我们先讲概念,什么叫做位操作符呢?操作的又是那个位?这里操作的是二进制位.位操作符就是把二进制的数字按照规定好的程序执行起来. 这里的符号有: 符号 代表的含义 & 按位与 | 按位或 ^ 按位异或 按位与: 那么我们先来讲按位与,我们来举个例子:

  • 一篇文章教你使用SpringBoot如何实现定时任务

    前言 在 Spring + SpringMVC 环境中,一般来说,要实现定时任务,我们有两中方案,一种是使用 Spring 自带的定时任务处理器 @Scheduled 注解,另一种就是使用第三方框架 Quartz ,Spring Boot 源自 Spring+SpringMVC ,因此天然具备这两个 Spring 中的定时任务实现策略,当然也支持 Quartz,本文我们就来看下 Spring Boot 中两种定时任务的实现方式. 一.第一种方式:@Scheduled 使用 @Scheduled

  • 一篇文章教你学会js实现弹幕效果

    目录 新建一个html文件: 建好html文件,搞出初始模版 HTML添加 CSS填充 js逻辑代码 动画效果 下面是弹幕效果 : 相信小伙伴们都看过了,那么它实现的原理是什么呢,那么我们前端怎么用我们web技术去实现呢?? 新建一个html文件: 哈哈哈,大家别像我一样用中文命名. 中文命名是不合规范的,行走江湖,大佬们看见你的中文命名会笑话你的. 上图中,我们引入了jquery插件,没错我们用jq写,回归原始(找不到cdn链接的小伙伴可以百度bootcdn,在里面搜索jquery).并且取了

  • 一篇文章教你学会使用Python绘制甘特图

    目录 优点 局限 一日一书 用来制作甘特图的专业工具也不少,常见的有:Microsoft Office Project.GanttProject.WARCHART XGantt.jQuery.Gantt.Excel等,网络上也有一些优质工具支持在线绘制甘特图. 可是这种现成的工具,往往也存在一些弊端,让编程人员不知所措.比如说,花里胡哨的UI,让人目不暇接,不知点哪个才好: 比如说,有些基于浏览器的图表需要掌握HTML.JS等编程语言,只会点Python的我直接被劝退: 再比如,进来就是注册.登

  • 一篇文章带你吃透JavaScript中的DOM知识及用法

    目录 一.前言 二.DOM框架 三.认识DOM节点 四.JS访问DOM 1.获取节点 2.改变 HTML 3.改变 CSS 4.检测节点类型 5.操作节点间的父子及兄弟关系 6.操作节点属性 7.创建和操作节点 总结 一.前言 DOM:Document Object Model(文档对象模型),定义了用户操作文档对象的接口,可以说DOM是自HTML将网上相关文档连接起来后最伟大的创新.它使得用户对HTML有了空前的访问能力,并使开发者将HTML作为XML文档来处理. 本文知识导图如下: 二.DO

  • 一篇文章轻松搞懂Java中的自旋锁

    前言 锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) .这些已经写好提供的锁为我们开发提供了便利. 在之前的文章<一文彻底搞懂面试中常问的各种"锁" >中介绍了Java中的各种"锁",可能对于不是很了解这些概念的同学来说会觉得有点绕,所以我决定拆分出来,逐步详细的介绍一下这些锁的来龙去脉,那么这篇文章就先来会一会"自旋锁". 正文 出现原因 在我们的

  • 一篇文章带你了解Java中ThreadPool线程池

    目录 ThreadPool 线程池的优势 线程池的特点 1 线程池的方法 (1) newFixedThreadPool (2) newSingleThreadExecutor (3) newScheduledThreadPool (4) newCachedThreadPool 2 线程池底层原理 3 线程池策略及分析 拒绝策略 如何设置maximumPoolSize大小 ThreadPool 线程池的优势 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些

  • 一篇文章教你如何在SpringCloud项目中使用OpenFeign

    目录 OpenFeign的介绍 OpenFeign是一种声明式 .模板化的HTTP客户端. OpenFeign与Feign的之间的关系 OpenFegin中的两个常用注解 在项目中使用OpenFeign 调用关系图 导入依赖 使用注解@FeignClient @EnableFeignClients 注入对象.调用 总结: OpenFeign的介绍 OpenFeign是一种声明式 .模板化的HTTP客户端. 何为声明式? 就像调用本地方法一样调用远程方法,无需感知操作远程http请求. 何为模板化

  • 一篇文章带你了解数据库中JOIN的用法

    前言 本章主要介绍数据库中Join的的用法,也是我们在使用数据库时非常基础的一个知识点.本次会介绍数据库中的 inner join. left join. right join 的用法以及它们之间的区别. 文章如有错误还请大家及时指出~ 以下都是采用mysql数据库 Join 相信大家在学习数据库的使用时,都有使用过Join,对数据库中的两张或两张以上表进行连接操作. Join 分为: 内连接(inner join) 外连接(outer join) 其中外连接分为: 左外连接(left oute

  • 一篇文章带你了解数据库中group by的用法

    前言 本章主要介绍数据库中group by的用法,也是我们在使用数据库时非常基础的一个知识点.并且也会涉及Join的使用,关于Join的用法,可以看我写的上一篇文章:带你了解数据库中JOIN的用法 如有错误还请大家及时指出~ 以下都是采用mysql数据库 Group By 概念 Group By语句从英文的字面意义上理解就是"根据(by)一定的规则进行分组(Group)". 作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理. 注意:group by

随机推荐