C++中的运算符总结(5):按位运算符(上)
C++中的运算符总结(5):按位运算符(上)
9、按位运算符 NOT( ~)、 AND( &)、 OR( |)和 XOR( ^)
逻辑运算符和按位运算符之前的差别在于,按位运算符返回的并非布尔值,而是对操作数对应位执行指定运算的结果。 C++让您能够执行按位 NOT、 OR、 AND 和 XOR(异或)运算,它们分别使用 ~ 将每位取反、使用 | 对相应位执行 OR 运算、使用 & 对相应位执行 AND 运算、使用^对相应位执行 XOR 运算。其中后三个运算符对变量与选择的数字(通常是位掩码)执行相应的运算。
 在整数的每位都表示特定标记的状态时,有些按位运算很有用。例如, 32 位的整数可用于表示 32 个布尔标记。以下程序演示了按位运算符的用法:
#include <iostream>
#include <bitset>
using namespace std;int main()
{cout << "Enter a number (0 - 255): ";unsigned short inputNum = 0;cin >> inputNum;bitset<8> inputBits (inputNum); cout << inputNum << " in binary is " << inputBits << endl;bitset<8> bitwiseNOT = (~inputNum);cout << "Logical NOT ~" << endl;cout << "~" << inputBits  << " = " << bitwiseNOT << endl;cout << "Logical AND, & with 00001111" << endl;bitset<8> bitwiseAND = (0x0F & inputNum);// 0x0F is hex for 0001111cout << "0001111 & " << inputBits  << " = " << bitwiseAND << endl;cout << "Logical OR, | with 00001111" << endl;bitset<8> bitwiseOR = (0x0F | inputNum);cout << "00001111 | " << inputBits  << " = " << bitwiseOR << endl;cout << "Logical XOR, ^ with 00001111" << endl;bitset<8> bitwiseXOR = (0x0F ^ inputNum);cout << "00001111 ^ " << inputBits  << " = " << bitwiseXOR << endl;return 0;
}
输出:
Enter a number (0 - 255): 181
181 in binary is 10110101
Logical NOT ~
~10110101 = 01001010
Logical AND, & with 00001111
0001111 & 10110101 = 00000101
Logical OR, | with 00001111
00001111 | 10110101 = 10111111
Logical XOR, ^ with 00001111
00001111 ^ 10110101 = 10111010
这个程序使用了一种还未介绍过的数据类型—bitset,旨在简化二进制数据的显示。这里使用 std::bitset 完全是为了方便显示,而没有其他任何目的。第 10、13、18 和 22 行将一个整数赋给了一个 bitset 对象,以便使用它来显示该整数的二进制表示。运算是对整数执行的。首先,请关注输出,它显示了用户输入的整数 181 的二进制表示,然后依次显示了将按位运算符 ~、 &、 | 和 ^ 用于该整数的结果。第 14 行使用按位运算 NOT 对各位取反。这个程序还演示了运算符 &、| 和 ^ 的工作原理,它们对两个操作数的相应位执行相应运算,从而获得最终的结果。只要结合使用这里的结果与前面介绍的真值表,您就能明白其中的工作原理。
该文章会更新,欢迎大家批评指正。
推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
 分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
 fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
 TCP/IP,协程,DPDK等技术内容
 点击立即学习:C/C++后台高级服务器课程
相关文章:
C++中的运算符总结(5):按位运算符(上)
C中的运算符总结(5):按位运算符(上) 9、按位运算符 NOT( ~)、 AND( &)、 OR( |)和 XOR( ^) 逻辑运算符和…...
8.Oracle中多表连接查询方式
表连接分类: 内连接、外连接、交叉连接、自连接 1 内连接 内连接是一种常见的多表关联查询方式,一般使用关键字INNER JOIN来实现。其中,INNER关键字可以省略,当只使用JOIN关键字时,语句只表示内连接操作。在使用内连…...
 
Linux 安装mysql(ARM架构)
添加mysql用户组和mysql用户 安装依赖libaio yum install -y libaio* 下载Mysql wget https://obs.cn-north-4.myhuaweicloud.com/obs-mirror-ftp4/database/mysql-5.7.27-aarch64.tar.gz安装mysql 解压Mysql tar xvf mysql-5.7.27-aarch64.tar.gz -C /usr/local/ 重命名 …...
git:git clone报错提示permissions xxxx for xxxxxx are too open
问题: 如题 参考: [密钥权限过大错误]ssh “permissions are too open” error 解决办法: 将id_rsa和id_rsa.pub的权限改为600...
elasticSearch数据的导入和导出
http://wget https://nodejs.org/dist/v10.13.0/node-v10.13.0-linux-x64.tar.gz 解压即可: 1、将索引中的数据导出到本地 myindex 是我的索引 elasticdump --inputhttp://localhost:9200/myindex--output/home/date/myindex.json2、将本地数据导入es中 elasticdum…...
 
DDR PHY
1.ddr phy架构 1.pub(phy unility block) 支持特性: (1)不支持SDRAM的DLL off mode (2)数据位宽是以8bit逐渐递增的(这样做的目的是因为可能支持16/32/64bit的总线位宽ÿ…...
 
XSS攻击是怎么回事?记录一下
title: XSS攻击 date: 2023-08-27 19:15:57 tags: [XSS, 网络安全] categories: 网络安全 今天学习了一个网络攻击的手段,XSS攻击技术,大家自建网站的朋友,记得看看是否有此漏洞。 🎈 XSS 攻击 全称跨站脚本攻击 Cross Site Sc…...
 
FFmpeg支持多线程编码并保存mp4文件示例
之前介绍的示例: (1).https://blog.csdn.net/fengbingchun/article/details/132129988 中对编码后数据保存成mp4 (2).https://blog.csdn.net/fengbingchun/article/details/132128885 中通过AVIOContext实现从内存读取数据 (3).https://blog.csdn.net/fengbingchun/…...
 
一文搞懂深度信念网络!DBN概念介绍与Pytorch实战
目录 一、概述1.1 深度信念网络的概述1.2 深度信念网络与其他深度学习模型的比较结构层次学习方式训练和优化应用领域 1.3 应用领域图像识别与处理自然语言处理推荐系统语音识别无监督学习与异常检测药物发现与生物信息学 二、结构2.1 受限玻尔兹曼机(RBM࿰…...
MyBatis:使用注解让数据库操作更简单
目录 一、简介 二、配置 三、基于注解的基本使用 四、测试 总结 一、简介 在Java开发中,数据库操作是一个常见而重要的任务。为了方便地执行SQL语句,获取结果集,处理异常等,我们通常需要使用JDBC(Java Database …...
 
基于PyTorch深度学习遥感影像地物分类与目标检测、分割及遥感影像问题深度学习优化
我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…...
 
4.网络设计与redis、memcached、nginx组件(一)
网络组件系列文章目录 第四章 网络设计与redis、memcached、nginx组件 文章目录 网络组件系列文章目录文章的思维导图前言一、网络相关的问题,网络开发中要处理那些问题?网络操作IO连接建立连接断开消息到达消息发送网络操作IO特性 二、网络中IO检测IO函…...
leetcode分类刷题:矩阵顺时针模拟
1、这种题目是对代码熟练度考察,模拟顺时针建立或访问矩阵,需要注意矩阵是否为方阵 2、具体思路:以圈数为循环条件,每一圈都坚持左闭右开的区间规则;当小的行列值为奇数,最后一圈为一行或一列或一个数字的不…...
Java8新特性整理记录
1、list实体集合根据某个属性分组后求和 方法一: list.stream().collect(Collectors.groupingBy(e -> e.getId())).values().stream().map(d -> {DemoEntity sampleData d.get(0);sampleData.setPremium(d.stream().map(s -> new BigDecimal(s.getPrem…...
43.227.196.1 RAID技术有什么意义?
RAID(Redundant Array of Inexpensive Disks)技术是一种数据存储技术,它通过将多个硬盘组合在一起,来提高数据存储的性能、可靠性和容错性。 RAID技术的主要意义包括: 提高数据读写性能:RAID技术可以将多…...
 
c++ qt--信号与槽(一) (第三部分)
c qt–信号与槽(一) (第三部分) 一.用qt自带的方法添加信号槽 1.第一种 1.如何添加 2.在何处进行绑定 2.第二种 1.如何添加 2.在何处进行绑定 而且会在mainwindow.h中添加槽函数的声明,在mainwindow.cpp中添加槽函数的定义 在mainwindow…...
LLM学习《Prompt Engineering for Developer》
Prompt 如何构造好的Prompt 分割符:分隔符就像是 Prompt 中的墙,将不同的指令、上下文、输入隔开,避免意外的混淆。你可以选择用 ,“”",< >, ,: 等做分隔符,只要能明确…...
 
nginx-获取客户端IP地址
上有服务器与客户端中间是有nginx代理服务器的,上游服务器如何获取客户端真实ip地址? nginx代理服务器设置X-Forwarded-For的header参数,代理服务器通过remote_addr获取客户端ip地址,将ip地址写入nginx代理服务器的X-Forwarded-Fo…...
Redis 高可用之集群搭建和数据分片
Redis 高可用之集群搭建和数据分片 一、简介1. Redis 集群:2. 集群搭建: 二、Redis 集群搭建1. 单机 Redis 升级为 Redis Clustera. 搭建方法b. 搭建方式说明 2. 环境准备3. 配置修改4. 启动集群 三、Redis数据分片的实现Redis数据分片概念说明数据分片的…...
 
兄弟,王者荣耀的段位排行榜是通过Redis实现的?
目录 一、排行榜设计方案1、数据库直接排序2、王者荣耀好友排行 二、Redis实现计数器1、什么是计数器功能?2、Redis实现计数器的原理(1)使用INCR命令实现计数器(2)使用INCRBY命令实现计数器 三、通过Redis实现“王者荣…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
 
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
 
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
 
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
 
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
 
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
